1+ using System ;
2+ using System . Threading . Tasks ;
3+ using NUnit . Framework ;
4+ using ServiceStack . DataAnnotations ;
5+ using ServiceStack . Model ;
6+ using ServiceStack . Text ;
7+
8+ namespace ServiceStack . OrmLite . Tests . Issues
9+ {
10+ //[Schema("dbo")]
11+ [ Alias ( "Project" ) ]
12+ public class Project : IHasId < int >
13+ {
14+ [ Alias ( "ProjectId" ) ]
15+ [ Index ( Unique = true ) ]
16+ [ AutoIncrement ]
17+ public int Id { get ; set ; }
18+
19+ [ Required ]
20+ [ References ( typeof ( Department ) ) ]
21+ public int DepartmentId { get ; set ; }
22+ [ Reference ]
23+ public Department Department { get ; set ; }
24+
25+ [ Required ]
26+ public string ProjectName { get ; set ; }
27+ [ Required ]
28+ public bool IsArchived { get ; set ; }
29+ [ Required ]
30+ public DateTime CreatedOn { get ; set ; }
31+ }
32+
33+ public class Department
34+ {
35+ [ Alias ( "DepartmentId" ) ]
36+ [ Index ( Unique = true ) ]
37+ [ AutoIncrement ]
38+ public int Id { get ; set ; }
39+
40+ public string Name { get ; set ; }
41+ }
42+
43+ [ Alias ( "ProjectTask" ) ]
44+ public class ProjectTask : IHasId < int >
45+ {
46+ [ Alias ( "ProjectTaskId" ) ]
47+ [ Index ( Unique = true ) ]
48+ [ AutoIncrement ]
49+ public int Id { get ; set ; }
50+
51+ [ References ( typeof ( Project ) ) ]
52+ public int ProjectId { get ; set ; }
53+ [ Reference ]
54+ public Project Project { get ; set ; }
55+
56+ [ Required ]
57+ public string Description { get ; set ; }
58+ [ Required ]
59+ public DateTime CreatedOn { get ; set ; }
60+ public DateTime ? FinishedOn { get ; set ; }
61+ [ Required ]
62+ public int EstimatedHours { get ; set ; }
63+
64+ //[References(typeof(Employee))]
65+ //public int? AssignedToId { get; set; }
66+ //[Reference]
67+ //public Employee AssignedTo { get; set; }
68+
69+ //[References(typeof(Employee))]
70+ //public int? RequestedById { get; set; }
71+ //[Reference]
72+ //public Employee RequestedBy { get; set; }
73+
74+ [ References ( typeof ( ProjectTaskStatus ) ) ]
75+ public int ? ProjectTaskStatusId { get ; set ; }
76+ [ Reference ]
77+ public ProjectTaskStatus ProjectTaskStatus { get ; set ; }
78+
79+ [ Required ]
80+ public int Priority { get ; set ; }
81+ [ Required ]
82+ public int Order { get ; set ; }
83+ }
84+
85+ //[Schema("dbo")]
86+ [ Alias ( "ProjectTaskStatus" ) ]
87+ public class ProjectTaskStatus : IHasId < int >
88+ {
89+ [ Alias ( "ProjectTaskStatusId" ) ]
90+ [ Index ( Unique = true ) ]
91+ [ AutoIncrement ]
92+ public int Id { get ; set ; }
93+ [ Required ]
94+ public string Description { get ; set ; }
95+ }
96+
97+ [ TestFixture ]
98+ public class LoadSelectAmbiguousColumnIssue : OrmLiteTestBase
99+ {
100+ [ Test ]
101+ public async Task Can_select_columns_with_LoadSelectAsync ( )
102+ {
103+ using ( var db = OpenDbConnection ( ) )
104+ {
105+ db . DropTable < ProjectTask > ( ) ;
106+ db . DropTable < Project > ( ) ;
107+ db . DropTable < ProjectTaskStatus > ( ) ;
108+ db . DropTable < Department > ( ) ;
109+
110+ db . CreateTable < Department > ( ) ;
111+ db . CreateTable < ProjectTaskStatus > ( ) ;
112+ db . CreateTable < Project > ( ) ;
113+ db . CreateTable < ProjectTask > ( ) ;
114+
115+ int departmentId = 1 ;
116+ int statusId = 1 ;
117+
118+ var q = db . From < ProjectTask > ( )
119+ . Join < ProjectTask , Project > ( ( pt , p ) => pt . ProjectId == p . Id )
120+ . Where < Project > ( p => p . DepartmentId == departmentId || departmentId == 0 )
121+ . And < ProjectTask > ( pt => pt . ProjectTaskStatusId == statusId || statusId == 0 ) ;
122+
123+ var tasks = await db . LoadSelectAsync ( q ) ;
124+
125+ tasks . PrintDump ( ) ;
126+ }
127+ }
128+ }
129+ }
0 commit comments