0
|
1 using System;
|
|
2 using System.Linq;
|
|
3
|
|
4 using BLToolkit.Data.Linq;
|
|
5 using BLToolkit.DataAccess;
|
|
6 using BLToolkit.Mapping;
|
|
7
|
|
8 using NUnit.Framework;
|
|
9
|
|
10 namespace Data.Linq
|
|
11 {
|
|
12 [TestFixture]
|
|
13 public class ExplicitInterfaceTests : TestBase
|
|
14 {
|
|
15 interface IDate
|
|
16 {
|
|
17 DateTime? Date { get; }
|
|
18 }
|
|
19
|
|
20 interface IDate2
|
|
21 {
|
|
22 DateTime? Date { get; set; }
|
|
23 }
|
|
24
|
|
25 [TableName("LinqDataTypes")]
|
|
26 class TestTable : IDate
|
|
27 {
|
|
28 [MapField("GuidValue")]
|
|
29 Guid? GuidValue { get; set; }
|
|
30
|
|
31 [MapField("BoolValue")]
|
|
32 public bool? Bit { get; set; }
|
|
33
|
|
34 private DateTime? _date;
|
|
35
|
|
36 [MapField("DateTimeValue", Storage = "_date")]
|
|
37 DateTime? IDate.Date
|
|
38 {
|
|
39 get
|
|
40 {
|
|
41 return _date;
|
|
42 }
|
|
43 }
|
|
44 }
|
|
45
|
|
46 [TableName("LinqDataTypes")]
|
|
47 public class TestTable2 : IDate
|
|
48 {
|
|
49 [MapField("GuidValue")]
|
|
50 Guid? GuidValue { get; set; }
|
|
51
|
|
52 [MapField("BoolValue")]
|
|
53 public bool? Bit { get; set; }
|
|
54
|
|
55 private DateTime? _date;
|
|
56
|
|
57 [MapField("DateTimeValue", Storage = "_date")]
|
|
58 DateTime? IDate.Date
|
|
59 {
|
|
60 get
|
|
61 {
|
|
62 return _date;
|
|
63 }
|
|
64 }
|
|
65 }
|
|
66
|
|
67 [TableName("LinqDataTypes")]
|
|
68 public class TestTable3 : IDate2
|
|
69 {
|
|
70 [MapField("GuidValue")]
|
|
71 Guid? GuidValue { get; set; }
|
|
72
|
|
73 [MapField("BoolValue")]
|
|
74 public bool? Bit { get; set; }
|
|
75
|
|
76 [MapField("DateTimeValue")]
|
|
77 DateTime? IDate2.Date
|
|
78 {
|
|
79 get;
|
|
80 set;
|
|
81 }
|
|
82 }
|
|
83
|
|
84 static IQueryable<T> SelectNoDate<T>(IQueryable<T> items) where T : IDate
|
|
85 {
|
|
86 return items.Where(i => i.Date == null);
|
|
87 }
|
|
88
|
|
89 static IQueryable<T> SelectNoDate2<T>(IQueryable<T> items) where T : IDate2
|
|
90 {
|
|
91 return items.Where(i => i.Date == null);
|
|
92 }
|
|
93
|
|
94 [Test]
|
|
95 public void ExplicitInterface1()
|
|
96 {
|
|
97 using (var db = new TestDbManager())
|
|
98 {
|
|
99 var result = SelectNoDate(db.GetTable<TestTable>()).ToList();
|
|
100 }
|
|
101 }
|
|
102
|
|
103 [Test]
|
|
104 public void ExplicitInterface2()
|
|
105 {
|
|
106 using (var db = new TestDbManager())
|
|
107 {
|
|
108 var result = SelectNoDate(db.GetTable<TestTable2>()).ToList();
|
|
109 }
|
|
110 }
|
|
111
|
|
112 [Test]
|
|
113 public void ExplicitInterface3()
|
|
114 {
|
|
115 using (var db = new TestDbManager())
|
|
116 {
|
|
117 var result = SelectNoDate2(db.GetTable<TestTable3>()).ToList();
|
|
118 }
|
|
119 }
|
|
120 }
|
|
121 }
|