| 
0
 | 
     1 using System;
 | 
| 
 | 
     2 using BLToolkit.Data;
 | 
| 
 | 
     3 using BLToolkit.Data.Linq;
 | 
| 
 | 
     4 using BLToolkit.DataAccess;
 | 
| 
 | 
     5 using BLToolkit.Mapping;
 | 
| 
 | 
     6 
 | 
| 
 | 
     7 using Data.Linq;
 | 
| 
 | 
     8 using Data.Linq.Model;
 | 
| 
 | 
     9 
 | 
| 
 | 
    10 using NUnit.Framework;
 | 
| 
 | 
    11 
 | 
| 
 | 
    12 namespace Update
 | 
| 
 | 
    13 {
 | 
| 
 | 
    14 	[TestFixture]
 | 
| 
 | 
    15 	public class BatchTest : TestBase
 | 
| 
 | 
    16 	{
 | 
| 
 | 
    17 		[Test]
 | 
| 
 | 
    18 		public void Transaction([DataContexts(ExcludeLinqService = true)] string context)
 | 
| 
 | 
    19 		{
 | 
| 
 | 
    20 			using (var db = new TestDbManager(context))
 | 
| 
 | 
    21 			{
 | 
| 
 | 
    22 				var list = new[]
 | 
| 
 | 
    23 				{
 | 
| 
 | 
    24 					new Parent { ParentID = 1111, Value1 = 1111 },
 | 
| 
 | 
    25 					new Parent { ParentID = 2111, Value1 = 2111 },
 | 
| 
 | 
    26 					new Parent { ParentID = 3111, Value1 = 3111 },
 | 
| 
 | 
    27 					new Parent { ParentID = 4111, Value1 = 4111 },
 | 
| 
 | 
    28 				};
 | 
| 
 | 
    29 
 | 
| 
 | 
    30 				foreach (var parent in list)
 | 
| 
 | 
    31 					db.Parent.Delete(p => p.ParentID == parent.ParentID);
 | 
| 
 | 
    32 
 | 
| 
 | 
    33 				db.BeginTransaction();
 | 
| 
 | 
    34 				db.InsertBatch(list);
 | 
| 
 | 
    35 				db.CommitTransaction();
 | 
| 
 | 
    36 
 | 
| 
 | 
    37 				foreach (var parent in list)
 | 
| 
 | 
    38 					db.Parent.Delete(p => p.ParentID == parent.ParentID);
 | 
| 
 | 
    39 			}
 | 
| 
 | 
    40 		}
 | 
| 
 | 
    41 
 | 
| 
 | 
    42 		[Test]
 | 
| 
 | 
    43 		public void NoTransaction([DataContexts(ExcludeLinqService=true)] string context)
 | 
| 
 | 
    44 		{
 | 
| 
 | 
    45 			using (var db = new TestDbManager(context))
 | 
| 
 | 
    46 			{
 | 
| 
 | 
    47 				var list = new[]
 | 
| 
 | 
    48 				{
 | 
| 
 | 
    49 					new Parent { ParentID = 1111, Value1 = 1111 },
 | 
| 
 | 
    50 					new Parent { ParentID = 2111, Value1 = 2111 },
 | 
| 
 | 
    51 					new Parent { ParentID = 3111, Value1 = 3111 },
 | 
| 
 | 
    52 					new Parent { ParentID = 4111, Value1 = 4111 },
 | 
| 
 | 
    53 				};
 | 
| 
 | 
    54 
 | 
| 
 | 
    55 				foreach (var parent in list)
 | 
| 
 | 
    56 					db.Parent.Delete(p => p.ParentID == parent.ParentID);
 | 
| 
 | 
    57 
 | 
| 
 | 
    58 				db.InsertBatch(list);
 | 
| 
 | 
    59 
 | 
| 
 | 
    60 				foreach (var parent in list)
 | 
| 
 | 
    61 					db.Parent.Delete(p => p.ParentID == parent.ParentID);
 | 
| 
 | 
    62 			}
 | 
| 
 | 
    63 		}
 | 
| 
 | 
    64 
 | 
| 
 | 
    65 		[TableName(Database="KanoonIr", Name="Area")]
 | 
| 
 | 
    66 		public class Area
 | 
| 
 | 
    67 		{
 | 
| 
 | 
    68 			[          PrimaryKey(1)] public int    AreaCode  { get; set; }
 | 
| 
 | 
    69 			                          public string AreaName  { get; set; }
 | 
| 
 | 
    70 			                          public int    StateCode { get; set; }
 | 
| 
 | 
    71 			[          PrimaryKey(2)] public int    CityCode  { get; set; }
 | 
| 
 | 
    72 			                          public string Address   { get; set; }
 | 
| 
 | 
    73 			                          public string Tels      { get; set; }
 | 
| 
 | 
    74 			[Nullable               ] public string WebSite   { get; set; }
 | 
| 
 | 
    75 			                          public bool   IsActive  { get; set; }
 | 
| 
 | 
    76 		}
 | 
| 
 | 
    77 
 | 
| 
 | 
    78 		[Test, ExpectedException(typeof(InvalidOperationException), ExpectedMessage="Cannot access destination table '[KanoonIr]..[Area]'.")]
 | 
| 
 | 
    79 		public void Issue260([IncludeDataContexts("Sql2005")] string context)
 | 
| 
 | 
    80 		{
 | 
| 
 | 
    81 			using (var db = GetDataContext(context))
 | 
| 
 | 
    82 			{
 | 
| 
 | 
    83 				((DbManager)db).InsertBatch(new[] { new Area { AreaCode = 1 } });
 | 
| 
 | 
    84 			}
 | 
| 
 | 
    85 		}
 | 
| 
 | 
    86 	}
 | 
| 
 | 
    87 }
 |