0
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3 using System.Linq;
|
|
4
|
|
5 using BLToolkit.Data.DataProvider;
|
|
6 using BLToolkit.Data.Linq;
|
|
7 using BLToolkit.DataAccess;
|
|
8 using BLToolkit.Mapping;
|
|
9
|
|
10 using NUnit.Framework;
|
|
11
|
|
12 namespace Data.Linq.UserTests
|
|
13 {
|
|
14 [TestFixture]
|
|
15 public class SelectManyDeleteTest : TestBase
|
|
16 {
|
|
17 [TableName(Name = "GrandChild")]
|
|
18 public new class GrandChild
|
|
19 {
|
|
20 public int ChildID { get; set; }
|
|
21 }
|
|
22
|
|
23 [TableName(Name = "Child")]
|
|
24 public new class Child
|
|
25 {
|
|
26 public int ParentID { get; set; }
|
|
27 public int ChildID { get; set; }
|
|
28
|
|
29 [Association(ThisKey = "ChildID", OtherKey = "ChildID", CanBeNull = false)]
|
|
30 public List<GrandChild> GrandChildren { get; set; }
|
|
31 }
|
|
32
|
|
33 [TableName(Name = "Parent")]
|
|
34 public new class Parent
|
|
35 {
|
|
36 [Identity, PrimaryKey(1)]
|
|
37 public int ParentID { get; set; }
|
|
38
|
|
39 [Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = true)]
|
|
40 public List<Child> Children { get; set; }
|
|
41 }
|
|
42
|
|
43 [Test]
|
|
44 public void Test([DataContexts(
|
|
45 ProviderName.Access, ProviderName.DB2, ProviderName.Informix, "Oracle",
|
|
46 ProviderName.PostgreSQL, ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Firebird
|
|
47 )] string context)
|
|
48 {
|
|
49 var harnessIds = new int[2];
|
|
50
|
|
51 using (var db = GetDataContext(context))
|
|
52 {
|
|
53 db.GetTable<Parent>()
|
|
54 .Where (x => harnessIds.Contains(x.ParentID))
|
|
55 .SelectMany(x => x.Children)
|
|
56 .SelectMany(x => x.GrandChildren)
|
|
57 .Delete();
|
|
58 }
|
|
59 }
|
|
60 }
|
|
61 }
|
|
62
|