| 
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 
 |