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