public void MergeWithDelete(string context)
 {
     using (var db = new TestDataConnection(context))
         using (db.BeginTransaction())
         {
             db.GetTable <LinqDataTypes2>()
             .Merge()
             .Using(db.Types2)
             .OnTargetKey()
             .UpdateWhenMatched()
             .InsertWhenNotMatched()
             .DeleteWhenNotMatchedBySource()
             .Merge();
         }
 }
        public void IsDbGeneratedTest()
        {
            using (var db = new TestDataConnection())
            {
                db.BeginTransaction();

                var id = db.InsertWithIdentity(new L2SPersons
                {
                    FirstName = "Test",
                    LastName  = "Test",
                    Gender    = "M"
                });

                db.GetTable<L2SPersons>().Delete(p => p.PersonID == ConvertTo<int>.From(id));
            }
        }
Esempio n. 3
0
        public void Issue200InSource([IncludeDataSources(
                                          ProviderName.SqlServer2008, ProviderName.SqlServer2012, ProviderName.SqlServer2014)]
                                     string context)
        {
            using (var db = new TestDataConnection(context))
                using (db.BeginTransaction())
                {
                    db.GetTable <AllTypes2>().Delete();

                    var dt  = DateTime.Now;
                    var dto = DateTimeOffset.Now;

                    var testData = new[]
                    {
                        new AllTypes2()
                        {
                            ID = 1,
                            datetimeoffsetDataType = dto,
                            datetime2DataType      = dt
                        },
                        new AllTypes2()
                        {
                            ID = 2,
                            datetimeoffsetDataType = dto.AddTicks(1),
                            datetime2DataType      = dt.AddTicks(1)
                        }
                    };

                    var cnt = db.GetTable <AllTypes2>()
                              .Merge()
                              .Using(testData)
                              .OnTargetKey()
                              .InsertWhenNotMatched()
                              .Merge();

                    var result = db.GetTable <AllTypes2>().OrderBy(_ => _.ID).ToArray();

                    Assert.AreEqual(2, cnt);
                    Assert.AreEqual(2, result.Length);

                    Assert.AreEqual(testData[0].datetime2DataType, result[0].datetime2DataType);
                    Assert.AreEqual(testData[0].datetimeoffsetDataType, result[0].datetimeoffsetDataType);

                    Assert.AreEqual(testData[1].datetime2DataType, result[1].datetime2DataType);
                    Assert.AreEqual(testData[1].datetimeoffsetDataType, result[1].datetimeoffsetDataType);
                }
        }
Esempio n. 4
0
        public void SequenceNameTest([IncludeDataSources(false, TestProvName.AllOracle)]
                                     string context)
        {
            using (var db = new TestDataConnection(context))
            {
                db.BeginTransaction();

                var user = new User {
                    Name = "user"
                };
                user.Id = Convert.ToInt64(db.InsertWithIdentity(user));

                Assert.True(db.LastQuery?.Contains("\"c##sequence_schema\".\"sq_test_user\".nextval"));

                db.Insert(new Contract {
                    UserId = user.Id, ContractNo = 1, Name = "contract1"
                });

                Assert.True(db.LastQuery?.Contains("\t\"sq_test_user_contract\".nextval"));
            }
        }
Esempio n. 5
0
        public void Issue200InPredicate([IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
        {
            using (var db = new TestDataConnection(context))
                using (db.BeginTransaction())
                {
                    db.GetTable <AllTypes2>().Delete();

                    var testData = new[]
                    {
                        new AllTypes2()
                        {
                            datetimeoffsetDataType = TestData.DateTimeOffset,
                            datetime2DataType      = TestData.DateTime
                        },
                        new AllTypes2()
                        {
                            datetimeoffsetDataType = TestData.DateTimeOffset.AddTicks(1),
                            datetime2DataType      = TestData.DateTime.AddTicks(1)
                        }
                    };

                    var cnt = db.GetTable <AllTypes2>()
                              .Merge()
                              .Using(testData)
                              .On((t, s) => s.datetime2DataType == testData[0].datetime2DataType && s.datetimeoffsetDataType == testData[0].datetimeoffsetDataType)
                              .InsertWhenNotMatched()
                              .Merge();

                    var result = db.GetTable <AllTypes2>().OrderBy(_ => _.ID).ToArray();

                    Assert.AreEqual(2, cnt);
                    Assert.AreEqual(2, result.Length);

                    Assert.AreEqual(testData[0].datetime2DataType, result[0].datetime2DataType);
                    Assert.AreEqual(testData[0].datetimeoffsetDataType, result[0].datetimeoffsetDataType);

                    Assert.AreEqual(testData[1].datetime2DataType, result[1].datetime2DataType);
                    Assert.AreEqual(testData[1].datetimeoffsetDataType, result[1].datetimeoffsetDataType);
                }
        }
Esempio n. 6
0
        public void SameSourceAssociationInUpdateBySourcePredicate(
            [IncludeDataSources(TestProvName.AllSqlServer2008Plus)] string context)
        {
            using (var db = new TestDataConnection(context))
                using (db.BeginTransaction())
                {
                    PrepareAssociationsData(db);

                    var rows = db.Person
                               .Merge()
                               .Using(db.Person)
                               .On((t, s) => t.ID == s.ID + 10)
                               .UpdateWhenNotMatchedBySourceAnd(
                        t => t.Patient.Diagnosis.Contains("very"),
                        t => new Model.Person()
                    {
                        FirstName = "Updated"
                    })
                               .Merge();

                    var result = db.Person.OrderBy(_ => _.ID).ToList();

                    Assert.AreEqual(1, rows);

                    Assert.AreEqual(6, result.Count);

                    AssertPerson(AssociationPersons[0], result[0]);
                    AssertPerson(AssociationPersons[1], result[1]);
                    AssertPerson(AssociationPersons[2], result[2]);

                    Assert.AreEqual(AssociationPersons[3].ID, result[3].ID);
                    Assert.AreEqual(AssociationPersons[3].Gender, result[3].Gender);
                    Assert.AreEqual("Updated", result[3].FirstName);
                    Assert.AreEqual(AssociationPersons[3].LastName, result[3].LastName);
                    Assert.AreEqual(AssociationPersons[3].MiddleName, result[3].MiddleName);

                    AssertPerson(AssociationPersons[4], result[4]);
                    AssertPerson(AssociationPersons[5], result[5]);
                }
        }
Esempio n. 7
0
		public void Transaction(string context)
		{
			using (var db = new TestDataConnection(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.BulkCopy(list);
				db.CommitTransaction();

				foreach (var parent in list)
					db.Parent.Delete(p => p.ParentID == parent.ParentID);
			}
		}
        public void AutoRollbackTransaction(string context)
        {
            using (var db = new TestDataConnection(context))
            {
                db.Insert(new Parent { ParentID = 1010, Value1 = 1010 });

                try
                {
                    using (db.BeginTransaction())
                    {
                        db.Parent.Update(t => t.ParentID == 1010, t => new Parent { Value1 = 1012 });
                    }

                    var p = db.Parent.First(t => t.ParentID == 1010);

                    Assert.That(p.Value1, Is.Not.EqualTo(1012));
                }
                finally
                {
                    db.Parent.Delete(t => t.ParentID >= 1000);
                }
            }
        }
Esempio n. 9
0
        public void CommitTransaction()
        {
            using (var db = new TestDataConnection())
            {
                db.Insert(new Parent { ParentID = 1010, Value1 = 1010 });

                try
                {
                    using (var tr = db.BeginTransaction())
                    {
                        db.Parent.Update(t => t.ParentID == 1010, t => new Parent { Value1 = 1011 });
                        tr.Commit();
                    }

                    var p = db.Parent.First(t => t.ParentID == 1010);

                    Assert.That(p.Value1, Is.EqualTo(1011));
                }
                finally
                {
                    db.Parent.Delete(t => t.ParentID >= 1000);
                }
            }
        }