annotate UnitTests/Linq/UserTests/MultiPartIdentifierTest.cs @ 6:11b6da379593

Исправлена странная ошибка при использовании OfType<...>().Where(...)
author cin
date Mon, 05 Dec 2016 05:50:52 +0300
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using BLToolkit.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 // ReSharper disable ClassNeverInstantiated.Local
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 namespace Data.Linq.UserTests
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public class MultiPartIdentifierTest : TestBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 class Table1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 public long Field1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 public long Field2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public int? Field3;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 [Association(ThisKey = "Field2", OtherKey = "Field2", CanBeNull = false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 public Table2 Table2Ref { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 [Association(ThisKey = "Field3", OtherKey = "Field3", CanBeNull = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 public Table4 Table4Ref { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 class Table2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 public long Field2 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 public int Field4 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 [Association(ThisKey = "Field2", OtherKey = "Field2", CanBeNull = false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 public List<Table1> Table1s { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 [Association(ThisKey="Field4", OtherKey="Field4", CanBeNull=false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 public Table3 Table3Ref { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 class Table3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 public int Field4;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 [Association(ThisKey="Field4", OtherKey="Field4", CanBeNull=true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public List<Table2> Table2s { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 class Table4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 public int Field3 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 public int Field4 { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 [Association(ThisKey = "Field3", OtherKey = "Field3", CanBeNull = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 public List<Table1> Table1s { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 [Association(ThisKey="Field4", OtherKey="ProblematicalField", CanBeNull=false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public Table5 Table5Ref { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 class Table5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 public int? Field5;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 public int ProblematicalField;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 [Association(ThisKey = "Field5", OtherKey = "ProblematicalField", CanBeNull = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 public Table5 Table5Ref { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 [Association(ThisKey = "ProblematicalField", OtherKey = "Field4", CanBeNull = true)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 public List<Table4> Table4s { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 public void Test([IncludeDataContexts("Sql2008")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 using (var db = GetDataContext(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 var q =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 from t1 in db.GetTable<Table5>()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 from t2 in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 (from t3 in t1.Table4s.SelectMany(x => x.Table1s)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 from t4 in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 from t5 in t3.Table4Ref.Table5Ref.Table5Ref.Table4s
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 from t6 in t5.Table1s
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 select t6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 select t4.Field1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 from t7 in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 (from t8 in t1.Table5Ref.Table4s.SelectMany(x => x.Table1s)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 from t9 in
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 from t10 in t8.Table2Ref.Table3Ref.Table2s
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 from t11 in t10.Table1s
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 select t11
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 select t9.Field1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 where t2 == t7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 select t7;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 var sql = q.ToString();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 var idx = sql.IndexOf(",");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 Assert.That(idx, Is.EqualTo(-1));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 }