diff UnitTests/Linq/UserTests/SelectManyDeleteTest.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UnitTests/Linq/UserTests/SelectManyDeleteTest.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using BLToolkit.Data.DataProvider;
+using BLToolkit.Data.Linq;
+using BLToolkit.DataAccess;
+using BLToolkit.Mapping;
+
+using NUnit.Framework;
+
+namespace Data.Linq.UserTests
+{
+	[TestFixture]
+	public class SelectManyDeleteTest : TestBase
+	{
+		[TableName(Name = "GrandChild")]
+		public new class GrandChild
+		{
+			public int ChildID { get; set; }
+		}
+
+		[TableName(Name = "Child")]
+		public new class Child
+		{
+			public int ParentID { get; set; }
+			public int ChildID  { get; set; }
+
+			[Association(ThisKey = "ChildID", OtherKey = "ChildID", CanBeNull = false)]
+			public List<GrandChild> GrandChildren { get; set; }
+		}
+
+		[TableName(Name = "Parent")]
+		public new class Parent
+		{
+			[Identity, PrimaryKey(1)]
+			public int ParentID { get; set; }
+
+			[Association(ThisKey = "ParentID", OtherKey = "ParentID", CanBeNull = true)]
+			public List<Child> Children { get; set; }
+		}
+
+		[Test]
+		public void Test([DataContexts(
+			ProviderName.Access, ProviderName.DB2, ProviderName.Informix, "Oracle",
+			ProviderName.PostgreSQL, ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Firebird
+			)] string context)
+		{
+			var harnessIds = new int[2];
+
+			using (var db = GetDataContext(context))
+			{
+				db.GetTable<Parent>()
+					.Where     (x => harnessIds.Contains(x.ParentID))
+					.SelectMany(x => x.Children)
+					.SelectMany(x => x.GrandChildren)
+					.Delete();
+			}
+		}
+	}
+}
+