diff UnitTests/Linq/BatchTest.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/BatchTest.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,87 @@
+using System;
+using BLToolkit.Data;
+using BLToolkit.Data.Linq;
+using BLToolkit.DataAccess;
+using BLToolkit.Mapping;
+
+using Data.Linq;
+using Data.Linq.Model;
+
+using NUnit.Framework;
+
+namespace Update
+{
+	[TestFixture]
+	public class BatchTest : TestBase
+	{
+		[Test]
+		public void Transaction([DataContexts(ExcludeLinqService = true)] string context)
+		{
+			using (var db = new TestDbManager(context))
+			{
+				var list = new[]
+				{
+					new Parent { ParentID = 1111, Value1 = 1111 },
+					new Parent { ParentID = 2111, Value1 = 2111 },
+					new Parent { ParentID = 3111, Value1 = 3111 },
+					new Parent { ParentID = 4111, Value1 = 4111 },
+				};
+
+				foreach (var parent in list)
+					db.Parent.Delete(p => p.ParentID == parent.ParentID);
+
+				db.BeginTransaction();
+				db.InsertBatch(list);
+				db.CommitTransaction();
+
+				foreach (var parent in list)
+					db.Parent.Delete(p => p.ParentID == parent.ParentID);
+			}
+		}
+
+		[Test]
+		public void NoTransaction([DataContexts(ExcludeLinqService=true)] string context)
+		{
+			using (var db = new TestDbManager(context))
+			{
+				var list = new[]
+				{
+					new Parent { ParentID = 1111, Value1 = 1111 },
+					new Parent { ParentID = 2111, Value1 = 2111 },
+					new Parent { ParentID = 3111, Value1 = 3111 },
+					new Parent { ParentID = 4111, Value1 = 4111 },
+				};
+
+				foreach (var parent in list)
+					db.Parent.Delete(p => p.ParentID == parent.ParentID);
+
+				db.InsertBatch(list);
+
+				foreach (var parent in list)
+					db.Parent.Delete(p => p.ParentID == parent.ParentID);
+			}
+		}
+
+		[TableName(Database="KanoonIr", Name="Area")]
+		public class Area
+		{
+			[          PrimaryKey(1)] public int    AreaCode  { get; set; }
+			                          public string AreaName  { get; set; }
+			                          public int    StateCode { get; set; }
+			[          PrimaryKey(2)] public int    CityCode  { get; set; }
+			                          public string Address   { get; set; }
+			                          public string Tels      { get; set; }
+			[Nullable               ] public string WebSite   { get; set; }
+			                          public bool   IsActive  { get; set; }
+		}
+
+		[Test, ExpectedException(typeof(InvalidOperationException), ExpectedMessage="Cannot access destination table '[KanoonIr]..[Area]'.")]
+		public void Issue260([IncludeDataContexts("Sql2005")] string context)
+		{
+			using (var db = GetDataContext(context))
+			{
+				((DbManager)db).InsertBatch(new[] { new Area { AreaCode = 1 } });
+			}
+		}
+	}
+}