0
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3 using System.Linq;
|
|
4 using System.Linq.Expressions;
|
|
5 using BLToolkit.Data.DataProvider;
|
|
6 using BLToolkit.Data.Linq;
|
|
7 using BLToolkit.DataAccess;
|
|
8 using BLToolkit.Mapping;
|
|
9 using NUnit.Framework;
|
|
10
|
|
11 namespace Data.Linq
|
|
12 {
|
|
13 [TestFixture, Category("MapValue")]
|
|
14 public class EnumMapping : TestBase
|
|
15 {
|
|
16 enum TestEnum1
|
|
17 {
|
|
18 [MapValue(11L)] Value1 = 3,
|
|
19 [MapValue(12L)] Value2,
|
|
20 }
|
|
21 enum TestEnum2
|
|
22 {
|
|
23 Value1 = 3,
|
|
24 Value2,
|
|
25 }
|
|
26 enum TestEnum3
|
|
27 {
|
|
28 Value1 = 3,
|
|
29 Value2,
|
|
30 }
|
|
31
|
|
32 [TableName("LinqDataTypes")]
|
|
33 class TestTable1
|
|
34 {
|
|
35 [PrimaryKey, MapField("ID")] public int Id;
|
|
36 [MapField("BigIntValue")] public TestEnum1 TestField;
|
|
37 }
|
|
38
|
|
39 [MapValue(TestEnum2.Value2, 12L)]
|
|
40 [TableName("LinqDataTypes")]
|
|
41 class TestTable2
|
|
42 {
|
|
43 [PrimaryKey, MapField("ID")]
|
|
44 public int Id;
|
|
45
|
|
46 [MapValue(TestEnum2.Value1, 11L)]
|
|
47 [MapField("BigIntValue")]
|
|
48 public TestEnum2 TestField;
|
|
49
|
|
50 [MapField("IntValue")]
|
|
51 public TestEnum3 Int32Field;
|
|
52 }
|
|
53
|
|
54 [TableName("LinqDataTypes")]
|
|
55 class NullableTestTable1
|
|
56 {
|
|
57 [PrimaryKey, MapField("ID")]
|
|
58 public int? Id;
|
|
59
|
|
60 [MapField("BigIntValue")]
|
|
61 public TestEnum1? TestField;
|
|
62 }
|
|
63
|
|
64 [MapValue(TestEnum2.Value2, 12L)]
|
|
65 [TableName("LinqDataTypes")]
|
|
66 class NullableTestTable2
|
|
67 {
|
|
68 [PrimaryKey, MapField("ID")]
|
|
69 public int? Id;
|
|
70
|
|
71 [MapValue(TestEnum2.Value1, 11L)]
|
|
72 [MapField("BigIntValue")]
|
|
73 public TestEnum2? TestField;
|
|
74
|
|
75 [MapField("IntValue")]
|
|
76 public TestEnum3? Int32Field;
|
|
77 }
|
|
78
|
|
79 [TableName("LinqDataTypes")]
|
|
80 class RawTable
|
|
81 {
|
|
82 [PrimaryKey, MapField("ID")]
|
|
83 public int Id;
|
|
84
|
|
85 [MapField("BigIntValue")]
|
|
86 public long TestField;
|
|
87
|
|
88 [MapField("IntValue")]
|
|
89 public int Int32Field;
|
|
90 }
|
|
91
|
|
92 class Cleaner : IDisposable
|
|
93 {
|
|
94 readonly ITestDataContext _db;
|
|
95
|
|
96 public Cleaner(ITestDataContext db)
|
|
97 {
|
|
98 _db = db;
|
|
99 Clean();
|
|
100 }
|
|
101
|
|
102 private void Clean()
|
|
103 {
|
|
104 _db.GetTable<RawTable>().Where(r => r.Id == RID).Delete();
|
|
105 }
|
|
106
|
|
107 public void Dispose()
|
|
108 {
|
|
109 try
|
|
110 {
|
|
111 // rollback emulation for WCF
|
|
112 Clean();
|
|
113 }
|
|
114 catch (Exception)
|
|
115 {
|
|
116 }
|
|
117 }
|
|
118 }
|
|
119
|
|
120 const long VAL2 = 12;
|
|
121 const long VAL1 = 11;
|
|
122 const int RID = 101;
|
|
123
|
|
124 [Test]
|
|
125 public void EnumMapInsert1()
|
|
126 {
|
|
127 ForEachProvider(db =>
|
|
128 {
|
|
129 using (new Cleaner(db))
|
|
130 {
|
|
131 db.GetTable<TestTable1>().Insert(() => new TestTable1
|
|
132 {
|
|
133 Id = RID,
|
|
134 TestField = TestEnum1.Value2
|
|
135 });
|
|
136
|
|
137 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count());
|
|
138 }
|
|
139 });
|
|
140 }
|
|
141
|
|
142 [Test]
|
|
143 public void EnumMapInsert2()
|
|
144 {
|
|
145 ForEachProvider(db =>
|
|
146 {
|
|
147 using (new Cleaner(db))
|
|
148 {
|
|
149 db.GetTable<TestTable2>().Insert(() => new TestTable2
|
|
150 {
|
|
151 Id = RID,
|
|
152 TestField = TestEnum2.Value2
|
|
153 });
|
|
154
|
|
155 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count());
|
|
156 }
|
|
157 });
|
|
158 }
|
|
159
|
|
160 [Test]
|
|
161 public void EnumMapInsert3()
|
|
162 {
|
|
163 ForEachProvider(db =>
|
|
164 {
|
|
165 using (new Cleaner(db))
|
|
166 {
|
|
167 db.GetTable<NullableTestTable1>().Insert(() => new NullableTestTable1
|
|
168 {
|
|
169 Id = RID,
|
|
170 TestField = TestEnum1.Value2
|
|
171 });
|
|
172
|
|
173 Assert.AreEqual(1, db.GetTable<RawTable>()
|
|
174 .Where(r => r.Id == RID && r.TestField == VAL2).Count());
|
|
175 }
|
|
176 });
|
|
177 }
|
|
178
|
|
179 [Test]
|
|
180 public void EnumMapInsert4()
|
|
181 {
|
|
182 ForEachProvider(db =>
|
|
183 {
|
|
184 using (new Cleaner(db))
|
|
185 {
|
|
186 db.GetTable<NullableTestTable2>().Insert(() => new NullableTestTable2
|
|
187 {
|
|
188 Id = RID,
|
|
189 TestField = TestEnum2.Value2
|
|
190 });
|
|
191
|
|
192 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count());
|
|
193 }
|
|
194 });
|
|
195 }
|
|
196
|
|
197 [Test]
|
|
198 public void EnumMapWhere1()
|
|
199 {
|
|
200 ForEachProvider(db =>
|
|
201 {
|
|
202 using (new Cleaner(db))
|
|
203 {
|
|
204 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
205 {
|
|
206 Id = RID,
|
|
207 TestField = VAL2
|
|
208 });
|
|
209
|
|
210 var result = db.GetTable<TestTable1>().Where(r => r.Id == RID && r.TestField == TestEnum1.Value2).Select(r => r.TestField).FirstOrDefault();
|
|
211 Assert.True(result == TestEnum1.Value2);
|
|
212 }
|
|
213 });
|
|
214 }
|
|
215
|
|
216 [Test]
|
|
217 public void EnumMapWhere2()
|
|
218 {
|
|
219 ForEachProvider(db =>
|
|
220 {
|
|
221 using (new Cleaner(db))
|
|
222 {
|
|
223 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
224 {
|
|
225 Id = RID,
|
|
226 TestField = VAL2
|
|
227 });
|
|
228
|
|
229 var result = db.GetTable<TestTable2>().Where(r => r.Id == RID && r.TestField == TestEnum2.Value2).Select(r => r.TestField).FirstOrDefault();
|
|
230 Assert.True(result == TestEnum2.Value2);
|
|
231 }
|
|
232 });
|
|
233 }
|
|
234
|
|
235 [Test]
|
|
236 public void EnumMapWhere3()
|
|
237 {
|
|
238 ForEachProvider(db =>
|
|
239 {
|
|
240 using (new Cleaner(db))
|
|
241 {
|
|
242 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
243 {
|
|
244 Id = RID,
|
|
245 TestField = VAL2
|
|
246 });
|
|
247
|
|
248 var result = db.GetTable<NullableTestTable1>()
|
|
249 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2)
|
|
250 .Select(r => r.TestField).FirstOrDefault();
|
|
251 Assert.True(result == TestEnum1.Value2);
|
|
252 }
|
|
253 });
|
|
254 }
|
|
255
|
|
256 [Test]
|
|
257 public void EnumMapWhere4()
|
|
258 {
|
|
259 ForEachProvider(db =>
|
|
260 {
|
|
261 using (new Cleaner(db))
|
|
262 {
|
|
263 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
264 {
|
|
265 Id = RID,
|
|
266 TestField = VAL2
|
|
267 });
|
|
268
|
|
269 var result = db.GetTable<NullableTestTable2>()
|
|
270 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2)
|
|
271 .Select(r => r.TestField).FirstOrDefault();
|
|
272 Assert.True(result == TestEnum2.Value2);
|
|
273 }
|
|
274 });
|
|
275 }
|
|
276
|
|
277 [Test]
|
|
278 public void EnumMapUpdate1()
|
|
279 {
|
|
280 ForEachProvider(db =>
|
|
281 {
|
|
282 using (new Cleaner(db))
|
|
283 {
|
|
284 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
285 {
|
|
286 Id = RID,
|
|
287 TestField = VAL1
|
|
288 });
|
|
289
|
|
290 db.GetTable<TestTable1>()
|
|
291 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value1)
|
|
292 .Update(r => new TestTable1 { TestField = TestEnum1.Value2 });
|
|
293
|
|
294 var result = db.GetTable<RawTable>()
|
|
295 .Where(r => r.Id == RID && r.TestField == VAL2)
|
|
296 .Select(r => r.TestField)
|
|
297 .FirstOrDefault();
|
|
298
|
|
299 Assert.True(result == VAL2);
|
|
300 }
|
|
301 });
|
|
302 }
|
|
303
|
|
304 [Test]
|
|
305 public void EnumMapUpdate2()
|
|
306 {
|
|
307 ForEachProvider(db =>
|
|
308 {
|
|
309 using (new Cleaner(db))
|
|
310 {
|
|
311 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
312 {
|
|
313 Id = RID,
|
|
314 TestField = VAL1
|
|
315 });
|
|
316
|
|
317 db.GetTable<TestTable2>()
|
|
318 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value1)
|
|
319 .Update(r => new TestTable2 { TestField = TestEnum2.Value2 });
|
|
320
|
|
321 var result = db.GetTable<RawTable>()
|
|
322 .Where(r => r.Id == RID && r.TestField == VAL2)
|
|
323 .Select(r => r.TestField)
|
|
324 .FirstOrDefault();
|
|
325
|
|
326 Assert.True(result == VAL2);
|
|
327 }
|
|
328 });
|
|
329 }
|
|
330
|
|
331 [Test]
|
|
332 public void EnumMapUpdate3()
|
|
333 {
|
|
334 ForEachProvider(db =>
|
|
335 {
|
|
336 using (new Cleaner(db))
|
|
337 {
|
|
338 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
339 {
|
|
340 Id = RID,
|
|
341 TestField = VAL1
|
|
342 });
|
|
343
|
|
344 db.GetTable<NullableTestTable1>()
|
|
345 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value1)
|
|
346 .Update(r => new NullableTestTable1 { TestField = TestEnum1.Value2 });
|
|
347
|
|
348 var result = db.GetTable<RawTable>()
|
|
349 .Where(r => r.Id == RID && r.TestField == VAL2)
|
|
350 .Select(r => r.TestField)
|
|
351 .FirstOrDefault();
|
|
352
|
|
353 Assert.True(result == VAL2);
|
|
354 }
|
|
355 });
|
|
356 }
|
|
357
|
|
358 [Test]
|
|
359 public void EnumMapUpdate4()
|
|
360 {
|
|
361 ForEachProvider(db =>
|
|
362 {
|
|
363 using (new Cleaner(db))
|
|
364 {
|
|
365 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
366 {
|
|
367 Id = RID,
|
|
368 TestField = VAL1
|
|
369 });
|
|
370
|
|
371 db.GetTable<NullableTestTable2>()
|
|
372 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value1)
|
|
373 .Update(r => new NullableTestTable2 { TestField = TestEnum2.Value2 });
|
|
374
|
|
375 var result = db.GetTable<RawTable>()
|
|
376 .Where(r => r.Id == RID && r.TestField == VAL2)
|
|
377 .Select(r => r.TestField)
|
|
378 .FirstOrDefault();
|
|
379
|
|
380 Assert.True(result == VAL2);
|
|
381 }
|
|
382 });
|
|
383 }
|
|
384
|
|
385 [Test]
|
|
386 public void EnumMapSelectAnon1([DataContexts] string context)
|
|
387 {
|
|
388 using (var db = GetDataContext(context))
|
|
389 {
|
|
390 using (new Cleaner(db))
|
|
391 {
|
|
392 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
393 {
|
|
394 Id = RID,
|
|
395 TestField = VAL2
|
|
396 });
|
|
397
|
|
398 var result = db.GetTable<TestTable1>()
|
|
399 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2)
|
|
400 .Select(r => new { r.TestField })
|
|
401 .FirstOrDefault();
|
|
402
|
|
403 Assert.NotNull(result);
|
|
404 Assert.That(result.TestField, Is.EqualTo(TestEnum1.Value2));
|
|
405 }
|
|
406 }
|
|
407 }
|
|
408
|
|
409 [Test]
|
|
410 public void EnumMapSelectAnon2()
|
|
411 {
|
|
412 ForEachProvider(db =>
|
|
413 {
|
|
414 using (new Cleaner(db))
|
|
415 {
|
|
416 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
417 {
|
|
418 Id = RID,
|
|
419 TestField = VAL2
|
|
420 });
|
|
421
|
|
422 var result = db.GetTable<TestTable2>()
|
|
423 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2)
|
|
424 .Select(r => new { r.TestField })
|
|
425 .FirstOrDefault();
|
|
426
|
|
427 Assert.NotNull(result);
|
|
428 Assert.True(result.TestField == TestEnum2.Value2);
|
|
429 }
|
|
430 });
|
|
431 }
|
|
432
|
|
433 [Test]
|
|
434 public void EnumMapSelectAnon3()
|
|
435 {
|
|
436 ForEachProvider(db =>
|
|
437 {
|
|
438 using (new Cleaner(db))
|
|
439 {
|
|
440 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
441 {
|
|
442 Id = RID,
|
|
443 TestField = VAL2
|
|
444 });
|
|
445
|
|
446 var result = db.GetTable<NullableTestTable1>()
|
|
447 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2)
|
|
448 .Select(r => new { r.TestField })
|
|
449 .FirstOrDefault();
|
|
450
|
|
451 Assert.NotNull(result);
|
|
452 Assert.True(result.TestField == TestEnum1.Value2);
|
|
453 }
|
|
454 });
|
|
455 }
|
|
456
|
|
457 [Test]
|
|
458 public void EnumMapSelectAnon4()
|
|
459 {
|
|
460 ForEachProvider(db =>
|
|
461 {
|
|
462 using (new Cleaner(db))
|
|
463 {
|
|
464 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
465 {
|
|
466 Id = RID,
|
|
467 TestField = VAL2
|
|
468 });
|
|
469
|
|
470 var result = db.GetTable<NullableTestTable2>()
|
|
471 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2)
|
|
472 .Select(r => new { r.TestField })
|
|
473 .FirstOrDefault();
|
|
474
|
|
475 Assert.NotNull(result);
|
|
476 Assert.True(result.TestField == TestEnum2.Value2);
|
|
477 }
|
|
478 });
|
|
479 }
|
|
480
|
|
481 [Test]
|
|
482 public void EnumMapDelete1()
|
|
483 {
|
|
484 ForEachProvider(db =>
|
|
485 {
|
|
486 using (new Cleaner(db))
|
|
487 {
|
|
488 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
489 {
|
|
490 Id = RID,
|
|
491 TestField = VAL2
|
|
492 });
|
|
493
|
|
494 Assert.True(1 == db.GetTable<TestTable1>().Delete(r => r.Id == RID && r.TestField == TestEnum1.Value2));
|
|
495 }
|
|
496 });
|
|
497 }
|
|
498
|
|
499 [Test]
|
|
500 public void EnumMapDelete2()
|
|
501 {
|
|
502 ForEachProvider(db =>
|
|
503 {
|
|
504 using (new Cleaner(db))
|
|
505 {
|
|
506 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
507 {
|
|
508 Id = RID,
|
|
509 TestField = VAL2
|
|
510 });
|
|
511
|
|
512 Assert.True(1 == db.GetTable<TestTable2>().Delete(r => r.Id == RID && r.TestField == TestEnum2.Value2));
|
|
513 }
|
|
514 });
|
|
515 }
|
|
516
|
|
517 [Test]
|
|
518 public void EnumMapDelete3()
|
|
519 {
|
|
520 ForEachProvider(db =>
|
|
521 {
|
|
522 using (new Cleaner(db))
|
|
523 {
|
|
524 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
525 {
|
|
526 Id = RID,
|
|
527 TestField = VAL2
|
|
528 });
|
|
529
|
|
530 Assert.True(1 == db.GetTable<NullableTestTable1>()
|
|
531 .Delete(r => r.Id == RID && r.TestField == TestEnum1.Value2));
|
|
532 }
|
|
533 });
|
|
534 }
|
|
535
|
|
536 [Test]
|
|
537 public void EnumMapDelete4()
|
|
538 {
|
|
539 ForEachProvider(db =>
|
|
540 {
|
|
541 using (new Cleaner(db))
|
|
542 {
|
|
543 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
544 {
|
|
545 Id = RID,
|
|
546 TestField = VAL2
|
|
547 });
|
|
548
|
|
549 Assert.True(1 == db.GetTable<NullableTestTable2>()
|
|
550 .Delete(r => r.Id == RID && r.TestField == TestEnum2.Value2));
|
|
551 }
|
|
552 });
|
|
553 }
|
|
554
|
|
555 [Test]
|
|
556 public void EnumMapSet1()
|
|
557 {
|
|
558 ForEachProvider(db =>
|
|
559 {
|
|
560 using (new Cleaner(db))
|
|
561 {
|
|
562 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
563 {
|
|
564 Id = RID,
|
|
565 TestField = VAL1
|
|
566 });
|
|
567
|
|
568 db.GetTable<TestTable1>()
|
|
569 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value1)
|
|
570 .Set(r => r.TestField, TestEnum1.Value2).Update();
|
|
571 var result = db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Select(r => r.TestField).FirstOrDefault();
|
|
572 Assert.True(result == VAL2);
|
|
573 }
|
|
574 });
|
|
575 }
|
|
576
|
|
577 [Test]
|
|
578 public void EnumMapSet2()
|
|
579 {
|
|
580 ForEachProvider(db =>
|
|
581 {
|
|
582 using (new Cleaner(db))
|
|
583 {
|
|
584 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
585 {
|
|
586 Id = RID,
|
|
587 TestField = VAL1
|
|
588 });
|
|
589
|
|
590 db.GetTable<TestTable2>()
|
|
591 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value1)
|
|
592 .Set(r => r.TestField, TestEnum2.Value2).Update();
|
|
593 var result = db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Select(r => r.TestField).FirstOrDefault();
|
|
594 Assert.True(result == VAL2);
|
|
595 }
|
|
596 });
|
|
597 }
|
|
598
|
|
599 [Test]
|
|
600 public void EnumMapSet3()
|
|
601 {
|
|
602 ForEachProvider(db =>
|
|
603 {
|
|
604 using (new Cleaner(db))
|
|
605 {
|
|
606 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
607 {
|
|
608 Id = RID,
|
|
609 Int32Field = 3
|
|
610 });
|
|
611
|
|
612 db.GetTable<TestTable2>()
|
|
613 .Where(r => r.Id == RID && r.Int32Field == TestEnum3.Value1)
|
|
614 .Set(r => r.Int32Field, () => TestEnum3.Value2).Update();
|
|
615 Assert.True(1 == db.GetTable<RawTable>().Where(r => r.Id == RID && r.Int32Field == 4).Count());
|
|
616 }
|
|
617 });
|
|
618 }
|
|
619
|
|
620 [Test]
|
|
621 public void EnumMapSet4()
|
|
622 {
|
|
623 ForEachProvider(db =>
|
|
624 {
|
|
625 using (new Cleaner(db))
|
|
626 {
|
|
627 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
628 {
|
|
629 Id = RID,
|
|
630 TestField = VAL1
|
|
631 });
|
|
632
|
|
633 db.GetTable<NullableTestTable1>()
|
|
634 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value1)
|
|
635 .Set(r => r.TestField, TestEnum1.Value2).Update();
|
|
636 var result = db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Select(r => r.TestField).FirstOrDefault();
|
|
637 Assert.True(result == VAL2);
|
|
638 }
|
|
639 });
|
|
640 }
|
|
641
|
|
642 [Test]
|
|
643 public void EnumMapSet5()
|
|
644 {
|
|
645 ForEachProvider(db =>
|
|
646 {
|
|
647 using (new Cleaner(db))
|
|
648 {
|
|
649 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
650 {
|
|
651 Id = RID,
|
|
652 TestField = VAL1
|
|
653 });
|
|
654
|
|
655 db.GetTable<NullableTestTable2>()
|
|
656 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value1)
|
|
657 .Set(r => r.TestField, TestEnum2.Value2).Update();
|
|
658 var result = db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Select(r => r.TestField).FirstOrDefault();
|
|
659 Assert.True(result == VAL2);
|
|
660 }
|
|
661 });
|
|
662 }
|
|
663
|
|
664 [Test]
|
|
665 public void EnumMapSet6()
|
|
666 {
|
|
667 ForEachProvider(db =>
|
|
668 {
|
|
669 using (new Cleaner(db))
|
|
670 {
|
|
671 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
672 {
|
|
673 Id = RID,
|
|
674 Int32Field = 3
|
|
675 });
|
|
676
|
|
677 db.GetTable<NullableTestTable2>()
|
|
678 .Where(r => r.Id == RID && r.Int32Field == TestEnum3.Value1)
|
|
679 .Set(r => r.Int32Field, () => TestEnum3.Value2).Update();
|
|
680 Assert.True(1 == db.GetTable<RawTable>().Where(r => r.Id == RID && r.Int32Field == 4).Count());
|
|
681 }
|
|
682 });
|
|
683 }
|
|
684
|
|
685 [Test]
|
|
686 public void EnumMapContains1([DataContexts] string context)
|
|
687 {
|
|
688 using (var db = GetDataContext(context))
|
|
689 {
|
|
690 using (new Cleaner(db))
|
|
691 {
|
|
692 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
693 {
|
|
694 Id = RID,
|
|
695 TestField = VAL2
|
|
696 });
|
|
697
|
|
698 Assert.True(1 == db.GetTable<TestTable1>()
|
|
699 .Where(r => r.Id == RID && new[] { TestEnum1.Value2 }.Contains(r.TestField)).Count());
|
|
700 }
|
|
701 }
|
|
702 }
|
|
703
|
|
704 [Test]
|
|
705 public void EnumMapContains2()
|
|
706 {
|
|
707 ForEachProvider(db =>
|
|
708 {
|
|
709 using (new Cleaner(db))
|
|
710 {
|
|
711 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
712 {
|
|
713 Id = RID,
|
|
714 TestField = VAL2
|
|
715 });
|
|
716
|
|
717 Assert.That(db.GetTable<TestTable2>().Where(r => r.Id == RID && new[] { TestEnum2.Value2 }.Contains(r.TestField)).Count(), Is.EqualTo(1));
|
|
718 }
|
|
719 });
|
|
720 }
|
|
721
|
|
722 [Test]
|
|
723 public void EnumMapContains3()
|
|
724 {
|
|
725 ForEachProvider(db =>
|
|
726 {
|
|
727 using (new Cleaner(db))
|
|
728 {
|
|
729 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
730 {
|
|
731 Id = RID,
|
|
732 TestField = VAL2
|
|
733 });
|
|
734
|
|
735 Assert.True(1 == db.GetTable<NullableTestTable1>()
|
|
736 .Where(r => r.Id == RID && new[] { (TestEnum1?)TestEnum1.Value2 }.Contains(r.TestField)).Count());
|
|
737 }
|
|
738 });
|
|
739 }
|
|
740
|
|
741 [Test]
|
|
742 public void EnumMapContains4()
|
|
743 {
|
|
744 ForEachProvider(db =>
|
|
745 {
|
|
746 using (new Cleaner(db))
|
|
747 {
|
|
748 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
749 {
|
|
750 Id = RID,
|
|
751 TestField = VAL2
|
|
752 });
|
|
753
|
|
754 Assert.True(1 == db.GetTable<NullableTestTable2>()
|
|
755 .Where(r => r.Id == RID && new[] { (TestEnum2?)TestEnum2.Value2 }.Contains(r.TestField)).Count());
|
|
756 }
|
|
757 });
|
|
758 }
|
|
759
|
|
760 [Test]
|
|
761 public void EnumMapSelectNull1()
|
|
762 {
|
|
763 ForEachProvider(db =>
|
|
764 {
|
|
765 using (new Cleaner(db))
|
|
766 {
|
|
767 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
768 {
|
|
769 Id = RID
|
|
770 });
|
|
771
|
|
772 var result = db.GetTable<NullableTestTable1>()
|
|
773 .Where(r => r.Id == RID)
|
|
774 .Select(r => new { r.TestField })
|
|
775 .FirstOrDefault();
|
|
776
|
|
777 Assert.NotNull(result);
|
|
778 Assert.True(result.TestField == null);
|
|
779 }
|
|
780 });
|
|
781 }
|
|
782
|
|
783 [Test]
|
|
784 public void EnumMapSelectNull2()
|
|
785 {
|
|
786 ForEachProvider(db =>
|
|
787 {
|
|
788 using (new Cleaner(db))
|
|
789 {
|
|
790 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
791 {
|
|
792 Id = RID
|
|
793 });
|
|
794
|
|
795 var result = db.GetTable<NullableTestTable2>()
|
|
796 .Where(r => r.Id == RID)
|
|
797 .Select(r => new { r.TestField })
|
|
798 .FirstOrDefault();
|
|
799
|
|
800 Assert.NotNull(result);
|
|
801 Assert.True(result.TestField == null);
|
|
802 }
|
|
803 });
|
|
804 }
|
|
805
|
|
806 [Test]
|
|
807 public void EnumMapWhereNull1()
|
|
808 {
|
|
809 ForEachProvider(db =>
|
|
810 {
|
|
811 using (new Cleaner(db))
|
|
812 {
|
|
813 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
814 {
|
|
815 Id = RID
|
|
816 });
|
|
817
|
|
818 var result = db.GetTable<NullableTestTable1>()
|
|
819 .Where(r => r.Id == RID && r.TestField == null)
|
|
820 .Select(r => new { r.TestField }).FirstOrDefault();
|
|
821 Assert.NotNull(result);
|
|
822 Assert.Null(result.TestField);
|
|
823 }
|
|
824 });
|
|
825 }
|
|
826
|
|
827 [Test]
|
|
828 public void EnumMapWhereNull2()
|
|
829 {
|
|
830 ForEachProvider(db =>
|
|
831 {
|
|
832 using (new Cleaner(db))
|
|
833 {
|
|
834 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
835 {
|
|
836 Id = RID
|
|
837 });
|
|
838
|
|
839 var result = db.GetTable<NullableTestTable2>()
|
|
840 .Where(r => r.Id == RID && r.TestField == null)
|
|
841 .Select(r => new { r.TestField }).FirstOrDefault();
|
|
842 Assert.NotNull(result);
|
|
843 Assert.Null(result.TestField);
|
|
844 }
|
|
845 });
|
|
846 }
|
|
847
|
|
848 [Test]
|
|
849 public void EnumMapInsertObject1()
|
|
850 {
|
|
851 ForEachProvider(db =>
|
|
852 {
|
|
853 using (new Cleaner(db))
|
|
854 {
|
|
855 db.Insert(new TestTable1
|
|
856 {
|
|
857 Id = RID,
|
|
858 TestField = TestEnum1.Value2
|
|
859 });
|
|
860
|
|
861 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count());
|
|
862 }
|
|
863 });
|
|
864 }
|
|
865
|
|
866 [Test]
|
|
867 public void EnumMapInsertObject2()
|
|
868 {
|
|
869 ForEachProvider(db =>
|
|
870 {
|
|
871 using (new Cleaner(db))
|
|
872 {
|
|
873 db.Insert(new TestTable2
|
|
874 {
|
|
875 Id = RID,
|
|
876 TestField = TestEnum2.Value2
|
|
877 });
|
|
878
|
|
879 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count());
|
|
880 }
|
|
881 });
|
|
882 }
|
|
883
|
|
884 [Test]
|
|
885 public void EnumMapInsertObject3()
|
|
886 {
|
|
887 ForEachProvider(db =>
|
|
888 {
|
|
889 using (new Cleaner(db))
|
|
890 {
|
|
891 db.Insert(new NullableTestTable1
|
|
892 {
|
|
893 Id = RID,
|
|
894 TestField = TestEnum1.Value2
|
|
895 });
|
|
896
|
|
897 Assert.AreEqual(1, db.GetTable<RawTable>()
|
|
898 .Where(r => r.Id == RID && r.TestField == VAL2).Count());
|
|
899 }
|
|
900 });
|
|
901 }
|
|
902
|
|
903 [Test]
|
|
904 public void EnumMapInsertObject4()
|
|
905 {
|
|
906 ForEachProvider(db =>
|
|
907 {
|
|
908 using (new Cleaner(db))
|
|
909 {
|
|
910 db.Insert(new NullableTestTable2
|
|
911 {
|
|
912 Id = RID,
|
|
913 TestField = TestEnum2.Value2
|
|
914 });
|
|
915
|
|
916 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL2).Count());
|
|
917 }
|
|
918 });
|
|
919 }
|
|
920
|
|
921 [Test]
|
|
922 public void EnumMapInsertFromSelectWithParam1()
|
|
923 {
|
|
924 ForEachProvider(db =>
|
|
925 {
|
|
926 using (new Cleaner(db))
|
|
927 {
|
|
928 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
929 {
|
|
930 Id = RID,
|
|
931 TestField = VAL2
|
|
932 });
|
|
933
|
|
934 var param = TestEnum1.Value1;
|
|
935
|
|
936 var result = db.GetTable<TestTable1>()
|
|
937 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2)
|
|
938 .Select(r => new TestTable1
|
|
939 {
|
|
940 Id = r.Id,
|
|
941 TestField = param
|
|
942 })
|
|
943 .Insert(db.GetTable<TestTable1>(), r => r);
|
|
944
|
|
945 Assert.AreEqual(1, result);
|
|
946 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL1).Count());
|
|
947 }
|
|
948 });
|
|
949 }
|
|
950
|
|
951 [Test]
|
|
952 public void EnumMapInsertFromSelectWithParam2()
|
|
953 {
|
|
954 ForEachProvider(db =>
|
|
955 {
|
|
956 using (new Cleaner(db))
|
|
957 {
|
|
958 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
959 {
|
|
960 Id = RID,
|
|
961 TestField = VAL2
|
|
962 });
|
|
963
|
|
964 var param = TestEnum2.Value1;
|
|
965
|
|
966 var result = db.GetTable<TestTable2>()
|
|
967 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2)
|
|
968 .Select(r => new TestTable2
|
|
969 {
|
|
970 Id = r.Id,
|
|
971 TestField = param
|
|
972 })
|
|
973 .Insert(db.GetTable<TestTable2>(), r => r);
|
|
974
|
|
975 Assert.AreEqual(1, result);
|
|
976 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL1).Count());
|
|
977 }
|
|
978 });
|
|
979 }
|
|
980
|
|
981 [Test]
|
|
982 public void EnumMapInsertFromSelectWithParam3()
|
|
983 {
|
|
984 ForEachProvider(db =>
|
|
985 {
|
|
986 using (new Cleaner(db))
|
|
987 {
|
|
988 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
989 {
|
|
990 Id = RID,
|
|
991 TestField = VAL2
|
|
992 });
|
|
993
|
|
994 var param = TestEnum1.Value1;
|
|
995
|
|
996 var result = db.GetTable<NullableTestTable1>()
|
|
997 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2)
|
|
998 .Select(r => new NullableTestTable1
|
|
999 {
|
|
1000 Id = r.Id,
|
|
1001 TestField = param
|
|
1002 })
|
|
1003 .Insert(db.GetTable<NullableTestTable1>(), r => r);
|
|
1004
|
|
1005 Assert.AreEqual(1, result);
|
|
1006 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL1).Count());
|
|
1007 }
|
|
1008 });
|
|
1009 }
|
|
1010
|
|
1011 [Test]
|
|
1012 public void EnumMapInsertFromSelectWithParam4()
|
|
1013 {
|
|
1014 ForEachProvider(db =>
|
|
1015 {
|
|
1016 using (new Cleaner(db))
|
|
1017 {
|
|
1018 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1019 {
|
|
1020 Id = RID,
|
|
1021 TestField = VAL2
|
|
1022 });
|
|
1023
|
|
1024 var param = TestEnum2.Value1;
|
|
1025
|
|
1026 var result = db.GetTable<NullableTestTable2>()
|
|
1027 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2)
|
|
1028 .Select(r => new NullableTestTable2
|
|
1029 {
|
|
1030 Id = r.Id,
|
|
1031 TestField = param
|
|
1032 })
|
|
1033 .Insert(db.GetTable<NullableTestTable2>(), r => r);
|
|
1034
|
|
1035 Assert.AreEqual(1, result);
|
|
1036 Assert.AreEqual(1, db.GetTable<RawTable>().Where(r => r.Id == RID && r.TestField == VAL1).Count());
|
|
1037 }
|
|
1038 });
|
|
1039 }
|
|
1040
|
|
1041 [Test]
|
|
1042 public void EnumMapDeleteEquals1()
|
|
1043 {
|
|
1044 ForEachProvider(db =>
|
|
1045 {
|
|
1046 using (new Cleaner(db))
|
|
1047 {
|
|
1048 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1049 {
|
|
1050 Id = RID,
|
|
1051 TestField = VAL2
|
|
1052 });
|
|
1053
|
|
1054 Assert.True(1 == db.GetTable<TestTable1>().Delete(r => r.Id == RID && r.TestField.Equals(TestEnum1.Value2)));
|
|
1055 }
|
|
1056 });
|
|
1057 }
|
|
1058
|
|
1059 [Test]
|
|
1060 public void EnumMapDeleteEquals2()
|
|
1061 {
|
|
1062 ForEachProvider(db =>
|
|
1063 {
|
|
1064 using (new Cleaner(db))
|
|
1065 {
|
|
1066 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1067 {
|
|
1068 Id = RID,
|
|
1069 TestField = VAL2
|
|
1070 });
|
|
1071
|
|
1072 Assert.True(1 == db.GetTable<TestTable2>().Delete(r => r.Id == RID && r.TestField.Equals(TestEnum2.Value2)));
|
|
1073 }
|
|
1074 });
|
|
1075 }
|
|
1076
|
|
1077 [Test]
|
|
1078 public void EnumMapDeleteEquals3()
|
|
1079 {
|
|
1080 ForEachProvider(db =>
|
|
1081 {
|
|
1082 using (new Cleaner(db))
|
|
1083 {
|
|
1084 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1085 {
|
|
1086 Id = RID,
|
|
1087 TestField = VAL2
|
|
1088 });
|
|
1089
|
|
1090 Assert.True(1 == db.GetTable<NullableTestTable1>()
|
|
1091 .Delete(r => r.Id == RID && r.TestField.Equals(TestEnum1.Value2)));
|
|
1092 }
|
|
1093 });
|
|
1094 }
|
|
1095
|
|
1096 [Test]
|
|
1097 public void EnumMapDeleteEquals4()
|
|
1098 {
|
|
1099 ForEachProvider(db =>
|
|
1100 {
|
|
1101 using (new Cleaner(db))
|
|
1102 {
|
|
1103 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1104 {
|
|
1105 Id = RID,
|
|
1106 TestField = VAL2
|
|
1107 });
|
|
1108
|
|
1109 Assert.True(1 == db.GetTable<NullableTestTable2>()
|
|
1110 .Delete(r => r.Id == RID && r.TestField.Equals(TestEnum2.Value2)));
|
|
1111 }
|
|
1112 });
|
|
1113 }
|
|
1114
|
|
1115 [Test]
|
|
1116 public void EnumMapCustomPredicate1([DataContexts] string context)
|
|
1117 {
|
|
1118 using (var db = GetDataContext(context))
|
|
1119 {
|
|
1120 using (new Cleaner(db))
|
|
1121 {
|
|
1122 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1123 {
|
|
1124 Id = RID,
|
|
1125 TestField = VAL2
|
|
1126 });
|
|
1127
|
|
1128 var entityParameter = Expression.Parameter(typeof(TestTable1), "entity"); // parameter name required for BLToolkit
|
|
1129 var filterExpression = Expression.Equal(Expression.Field(entityParameter, "TestField"), Expression.Constant(TestEnum1.Value2));
|
|
1130 var filterPredicate = Expression.Lambda<Func<TestTable1, bool>>(filterExpression, entityParameter);
|
|
1131 var result = db.GetTable<TestTable1>().Where(filterPredicate).ToList();
|
|
1132
|
|
1133 Assert.AreEqual(1, result.Count);
|
|
1134 }
|
|
1135 }
|
|
1136 }
|
|
1137
|
|
1138 [Test]
|
|
1139 public void EnumMapCustomPredicate2([DataContexts] string context)
|
|
1140 {
|
|
1141 using (var db = GetDataContext(context))
|
|
1142 {
|
|
1143 using (new Cleaner(db))
|
|
1144 {
|
|
1145 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1146 {
|
|
1147 Id = RID,
|
|
1148 TestField = VAL2
|
|
1149 });
|
|
1150
|
|
1151 var entityParameter = Expression.Parameter(typeof(TestTable2), "entity"); // parameter name required for BLToolkit
|
|
1152 var filterExpression = Expression.Equal(Expression.Field(entityParameter, "TestField"), Expression.Constant(TestEnum2.Value2));
|
|
1153 var filterPredicate = Expression.Lambda<Func<TestTable2, bool>>(filterExpression, entityParameter);
|
|
1154 var result = db.GetTable<TestTable2>().Where(filterPredicate).ToList();
|
|
1155
|
|
1156 Assert.AreEqual(1, result.Count);
|
|
1157 }
|
|
1158 }
|
|
1159 }
|
|
1160
|
|
1161 [TableName("LinqDataTypes")]
|
|
1162 class TestTable3
|
|
1163 {
|
|
1164 [PrimaryKey]
|
|
1165 public int ID;
|
|
1166
|
|
1167 [MapField("BigIntValue")]
|
|
1168 public TestEnum1? TargetType;
|
|
1169
|
|
1170 [MapField("IntValue")]
|
|
1171 public int? TargetID;
|
|
1172 }
|
|
1173
|
|
1174 struct ObjectReference
|
|
1175 {
|
|
1176 public TestEnum1 TargetType;
|
|
1177 public int TargetID;
|
|
1178 public ObjectReference(TestEnum1 targetType, int tagetId)
|
|
1179 {
|
|
1180 TargetType = targetType;
|
|
1181 TargetID = tagetId;
|
|
1182 }
|
|
1183 }
|
|
1184
|
|
1185 [Test]
|
|
1186 public void Test_4_1_18_Regression1()
|
|
1187 {
|
|
1188 ForEachProvider(db =>
|
|
1189 {
|
|
1190 using (new Cleaner(db))
|
|
1191 {
|
|
1192 db.GetTable<RawTable>().Insert(() => new RawTable()
|
|
1193 {
|
|
1194 Id = RID,
|
|
1195 TestField = VAL2,
|
|
1196 Int32Field = 10
|
|
1197 });
|
|
1198
|
|
1199 var result = db.GetTable<TestTable3>().Where(r => r.ID == RID).Select(_ => new
|
|
1200 {
|
|
1201 Target = _.TargetType != null && _.TargetID != null
|
|
1202 ? new ObjectReference(_.TargetType.Value, _.TargetID.Value)
|
|
1203 : default(ObjectReference?)
|
|
1204 })
|
|
1205 .ToArray();
|
|
1206
|
|
1207 Assert.AreEqual(1, result.Length);
|
|
1208 Assert.NotNull(result[0].Target);
|
|
1209 Assert.AreEqual(10, result[0].Target.Value.TargetID);
|
|
1210 Assert.AreEqual(TestEnum1.Value2, result[0].Target.Value.TargetType);
|
|
1211 }
|
|
1212 });
|
|
1213 }
|
|
1214
|
|
1215 [TableName("LinqDataTypes")]
|
|
1216 class TestTable4
|
|
1217 {
|
|
1218 [PrimaryKey]
|
|
1219 public int ID;
|
|
1220
|
|
1221 [MapField("BigIntValue")]
|
|
1222 public TestEnum2? TargetType;
|
|
1223
|
|
1224 [MapField("IntValue")]
|
|
1225 public int? TargetID;
|
|
1226 }
|
|
1227
|
|
1228 struct ObjectReference2
|
|
1229 {
|
|
1230 public TestEnum2 TargetType;
|
|
1231 public int TargetID;
|
|
1232 public ObjectReference2(TestEnum2 targetType, int tagetId)
|
|
1233 {
|
|
1234 TargetType = targetType;
|
|
1235 TargetID = tagetId;
|
|
1236 }
|
|
1237 }
|
|
1238
|
|
1239 [Test]
|
|
1240 public void Test_4_1_18_Regression2()
|
|
1241 {
|
|
1242 ForEachProvider(db =>
|
|
1243 {
|
|
1244 using (new Cleaner(db))
|
|
1245 {
|
|
1246 db.GetTable<RawTable>().Insert(() => new RawTable()
|
|
1247 {
|
|
1248 Id = RID,
|
|
1249 TestField = (long)TestEnum2.Value2,
|
|
1250 Int32Field = 10
|
|
1251 });
|
|
1252
|
|
1253 var result = db.GetTable<TestTable4>().Where(r => r.ID == RID).Select(_ => new
|
|
1254 {
|
|
1255 Target = _.TargetType != null && _.TargetID != null
|
|
1256 ? new ObjectReference2(_.TargetType.Value, _.TargetID.Value)
|
|
1257 : default(ObjectReference2?)
|
|
1258 })
|
|
1259 .ToArray();
|
|
1260
|
|
1261 Assert.AreEqual(1, result.Length);
|
|
1262 Assert.NotNull(result[0].Target);
|
|
1263 Assert.AreEqual(10, result[0].Target.Value.TargetID);
|
|
1264 Assert.AreEqual(TestEnum2.Value2, result[0].Target.Value.TargetType);
|
|
1265 }
|
|
1266 });
|
|
1267 }
|
|
1268
|
|
1269 class NullableResult
|
|
1270 {
|
|
1271 public TestEnum1? Value;
|
|
1272 }
|
|
1273
|
|
1274 [Test]
|
|
1275 public void EnumMapSelectNull([DataContexts] string context)
|
|
1276 {
|
|
1277 using (var db = GetDataContext(context))
|
|
1278 {
|
|
1279 using (new Cleaner(db))
|
|
1280 {
|
|
1281 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1282 {
|
|
1283 Id = RID
|
|
1284 });
|
|
1285
|
|
1286 var result = db.GetTable<TestTable1>()
|
|
1287 .Where(r => r.Id == RID)
|
|
1288 .Select(r => new NullableResult {Value = r.TestField })
|
|
1289 .FirstOrDefault();
|
|
1290
|
|
1291 Assert.NotNull(result);
|
|
1292 Assert.Null(result.Value);
|
|
1293 }
|
|
1294 }
|
|
1295 }
|
|
1296
|
|
1297 private TestEnum1 Convert(TestEnum1 val)
|
|
1298 {
|
|
1299 return val;
|
|
1300 }
|
|
1301
|
|
1302 [Test]
|
|
1303 public void EnumMapSelectNull_Regression([DataContexts] string context)
|
|
1304 {
|
|
1305 using (var db = GetDataContext(context))
|
|
1306 {
|
|
1307 using (new Cleaner(db))
|
|
1308 {
|
|
1309 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1310 {
|
|
1311 Id = RID,
|
|
1312 TestField = VAL2
|
|
1313 });
|
|
1314
|
|
1315 var result = db.GetTable<TestTable1>()
|
|
1316 .Where(r => r.Id == RID)
|
|
1317 .Select(r => new NullableResult { Value = Convert(r.TestField) })
|
|
1318 .FirstOrDefault();
|
|
1319
|
|
1320 Assert.NotNull(result);
|
|
1321 Assert.That(result.Value, Is.EqualTo(TestEnum1.Value2));
|
|
1322 }
|
|
1323 }
|
|
1324 }
|
|
1325
|
|
1326 [Flags]
|
|
1327 enum TestFlag
|
|
1328 {
|
|
1329 Value1 = 0x1,
|
|
1330 Value2 = 0x2
|
|
1331 }
|
|
1332
|
|
1333 [TableName("LinqDataTypes")]
|
|
1334 class TestTable5
|
|
1335 {
|
|
1336 public int ID;
|
|
1337 public TestFlag IntValue;
|
|
1338 }
|
|
1339
|
|
1340 [Test]
|
|
1341 public void TestFlagEnum([DataContexts(ProviderName.Access)] string context)
|
|
1342 {
|
|
1343 using (var db = GetDataContext(context))
|
|
1344 {
|
|
1345 var result =
|
|
1346 from t in db.GetTable<TestTable5>()
|
|
1347 where (t.IntValue & TestFlag.Value1) != 0
|
|
1348 select t;
|
|
1349
|
|
1350 var sql = result.ToString();
|
|
1351
|
|
1352 Assert.That(sql, Is.Not.Contains("Convert"));
|
|
1353 }
|
|
1354 }
|
|
1355
|
|
1356 [Test]
|
|
1357 public void EnumMapContainsList1()
|
|
1358 {
|
|
1359 ForEachProvider(db =>
|
|
1360 {
|
|
1361 using (new Cleaner(db))
|
|
1362 {
|
|
1363 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1364 {
|
|
1365 Id = RID,
|
|
1366 TestField = VAL2
|
|
1367 });
|
|
1368
|
|
1369 var set = new HashSet<TestEnum1>();
|
|
1370 set.Add(TestEnum1.Value2);
|
|
1371
|
|
1372 Assert.That(db.GetTable<TestTable1>()
|
|
1373 .Where(r => r.Id == RID && set.Contains(r.TestField)).Count(), Is.EqualTo(1));
|
|
1374 Assert.That(db.GetTable<TestTable1>()
|
|
1375 .Where(r => r.Id == RID && !set.Contains(r.TestField)).Count(), Is.EqualTo(0));
|
|
1376 }
|
|
1377 });
|
|
1378 }
|
|
1379
|
|
1380 [Test]
|
|
1381 public void EnumMapContainsList2()
|
|
1382 {
|
|
1383 ForEachProvider(db =>
|
|
1384 {
|
|
1385 using (new Cleaner(db))
|
|
1386 {
|
|
1387 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1388 {
|
|
1389 Id = RID,
|
|
1390 TestField = VAL2
|
|
1391 });
|
|
1392
|
|
1393 var set = new HashSet<TestEnum2>();
|
|
1394 set.Add(TestEnum2.Value2);
|
|
1395
|
|
1396 Assert.That(db.GetTable<TestTable2>().Where(r => r.Id == RID && set.Contains(r.TestField)).Count(), Is.EqualTo(1));
|
|
1397 Assert.That(db.GetTable<TestTable2>().Where(r => r.Id == RID && !set.Contains(r.TestField)).Count(), Is.EqualTo(0));
|
|
1398 }
|
|
1399 });
|
|
1400 }
|
|
1401
|
|
1402 [Test]
|
|
1403 public void EnumMapContainsList3()
|
|
1404 {
|
|
1405 ForEachProvider(db =>
|
|
1406 {
|
|
1407 using (new Cleaner(db))
|
|
1408 {
|
|
1409 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1410 {
|
|
1411 Id = RID,
|
|
1412 TestField = VAL2
|
|
1413 });
|
|
1414
|
|
1415 var set = new HashSet<TestEnum1?>();
|
|
1416 set.Add(TestEnum1.Value2);
|
|
1417
|
|
1418 Assert.That(db.GetTable<NullableTestTable1>()
|
|
1419 .Where(r => r.Id == RID && set.Contains(r.TestField)).Count(), Is.EqualTo(1));
|
|
1420 Assert.That(db.GetTable<NullableTestTable1>()
|
|
1421 .Where(r => r.Id == RID && !set.Contains(r.TestField)).Count(), Is.EqualTo(0));
|
|
1422 }
|
|
1423 });
|
|
1424 }
|
|
1425
|
|
1426 [Test]
|
|
1427 public void EnumMapContainsList4()
|
|
1428 {
|
|
1429 ForEachProvider(db =>
|
|
1430 {
|
|
1431 using (new Cleaner(db))
|
|
1432 {
|
|
1433 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1434 {
|
|
1435 Id = RID,
|
|
1436 TestField = VAL2
|
|
1437 });
|
|
1438
|
|
1439 var set = new HashSet<TestEnum2?>();
|
|
1440 set.Add(TestEnum2.Value2);
|
|
1441
|
|
1442 Assert.That(db.GetTable<NullableTestTable2>()
|
|
1443 .Where(r => r.Id == RID && set.Contains(r.TestField)).Count(), Is.EqualTo(1));
|
|
1444 Assert.That(db.GetTable<NullableTestTable2>()
|
|
1445 .Where(r => r.Id == RID && !set.Contains(r.TestField)).Count(), Is.EqualTo(0));
|
|
1446 }
|
|
1447 });
|
|
1448 }
|
|
1449
|
|
1450 [Test]
|
|
1451 public void EnumMapIntermediateObject1()
|
|
1452 {
|
|
1453 ForEachProvider(db =>
|
|
1454 {
|
|
1455 using (new Cleaner(db))
|
|
1456 {
|
|
1457 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1458 {
|
|
1459 Id = RID,
|
|
1460 TestField = VAL2
|
|
1461 });
|
|
1462
|
|
1463 Assert.That(
|
|
1464 db.GetTable<TestTable1>()
|
|
1465 .Select(r => new {r.Id, r.TestField})
|
|
1466 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2).Count(), Is.EqualTo(1));
|
|
1467 }
|
|
1468 });
|
|
1469 }
|
|
1470
|
|
1471 //////[Test]
|
|
1472 public void EnumMapIntermediateObject2()
|
|
1473 {
|
|
1474 ForEachProvider(db =>
|
|
1475 {
|
|
1476 using (new Cleaner(db))
|
|
1477 {
|
|
1478 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1479 {
|
|
1480 Id = RID,
|
|
1481 TestField = VAL2
|
|
1482 });
|
|
1483
|
|
1484 Assert.That(
|
|
1485 db.GetTable<TestTable2>()
|
|
1486 .Select(r => new { r.Id, r.TestField })
|
|
1487 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2).Count(), Is.EqualTo(1));
|
|
1488 }
|
|
1489 });
|
|
1490 }
|
|
1491
|
|
1492 [Test]
|
|
1493 public void EnumMapIntermediateObject3()
|
|
1494 {
|
|
1495 ForEachProvider(db =>
|
|
1496 {
|
|
1497 using (new Cleaner(db))
|
|
1498 {
|
|
1499 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1500 {
|
|
1501 Id = RID,
|
|
1502 TestField = VAL2
|
|
1503 });
|
|
1504
|
|
1505 Assert.That(
|
|
1506 db.GetTable<NullableTestTable1>()
|
|
1507 .Select(r => new { r.Id, r.TestField })
|
|
1508 .Where(r => r.Id == RID && r.TestField == TestEnum1.Value2).Count(), Is.EqualTo(1));
|
|
1509 }
|
|
1510 });
|
|
1511 }
|
|
1512
|
|
1513 //////[Test]
|
|
1514 public void EnumMapIntermediateObject4()
|
|
1515 {
|
|
1516 ForEachProvider(db =>
|
|
1517 {
|
|
1518 using (new Cleaner(db))
|
|
1519 {
|
|
1520 db.GetTable<RawTable>().Insert(() => new RawTable
|
|
1521 {
|
|
1522 Id = RID,
|
|
1523 TestField = VAL2
|
|
1524 });
|
|
1525
|
|
1526 Assert.That(
|
|
1527 db.GetTable<NullableTestTable2>()
|
|
1528 .Select(r => new { r.Id, r.TestField })
|
|
1529 .Where(r => r.Id == RID && r.TestField == TestEnum2.Value2).Count(), Is.EqualTo(1));
|
|
1530 }
|
|
1531 });
|
|
1532 }
|
|
1533 }
|
|
1534 }
|