コード例 #1
0
        public void Issue1007OnOldAPIv1(string context)
        {
            using (var db = new TestDataConnection(context))
                using (db.BeginTransaction())
                {
                    var table = db.GetTable <TestMappingWithIdentity>();
                    table.Delete();

                    db.Insert(new TestMappingWithIdentity());

                    var lastId = table.Select(_ => _.Id).Max();

                    var source = new[]
                    {
                        new TestMappingWithIdentity()
                        {
                            Id    = lastId,
                            Field = 10
                        }
                    };

                    var rows = db.Merge(source);

                    var result = table.OrderBy(_ => _.Id).ToList();

                    AssertRowCount(1, rows, context);

                    Assert.AreEqual(1, result.Count);

                    var newRecord = new TestMapping1();

                    Assert.AreEqual(lastId, result[0].Id);
                    Assert.AreEqual(10, result[0].Field);
                }
        }
コード例 #2
0
 private void AssertRow(TestMapping1 expected, TestMapping1 actual, int?exprected3, int?exprected4)
 {
     Assert.AreEqual(expected.Id, actual.Id);
     Assert.AreEqual(expected.Field1, actual.Field1);
     Assert.AreEqual(expected.Field2, actual.Field2);
     Assert.AreEqual(exprected3, actual.Field3);
     Assert.AreEqual(exprected4, actual.Field4);
     Assert.IsNull(actual.Field5);
 }
コード例 #3
0
 private void AssertDynamicRow(TestMapping1 expected, DynamicColumns1 actual, int?exprected3, int?exprected4)
 {
     Assert.AreEqual(expected.Id, actual.ExtendedProperties["Id"]);
     Assert.AreEqual(expected.Field1, actual.ExtendedProperties["Field1"]);
     Assert.AreEqual(expected.Field2, actual.ExtendedProperties["Field2"]);
     Assert.AreEqual(exprected3, actual.ExtendedProperties["Field3"]);
     Assert.AreEqual(exprected4, actual.ExtendedProperties["Field4"]);
     Assert.IsNull(actual.ExtendedProperties["Field5"]);
 }
コード例 #4
0
ファイル: MergeTests.Issues.cs プロジェクト: ywscr/linq2db
        public void Issue1007OnOldAPIv2([IdentityInsertMergeDataContextSource(
                                             ProviderName.Sybase, ProviderName.SybaseManaged)]
                                        string context)
        {
            using (var db = new TestDataConnection(context))
                using (db.BeginTransaction())
                {
                    db.Doctor.Delete();
                    db.Patient.Delete();

                    var table = db.GetTable <Person1007>();
                    table.Delete();

                    db.Insert(new Person1007()
                    {
                        FirstName = "first name",
                        LastName  = "last name",
                        Gender    = Gender.Female
                    });

                    var lastId = table.Select(_ => _.ID).Max();

                    var source = new[]
                    {
                        new Person1007()
                        {
                            FirstName = "first name",
                            LastName  = "updated",
                            Gender    = Gender.Male,
                            ID        = 10
                        }
                    };

                    var rows = db.Merge(source);

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

                    AssertRowCount(1, rows, context);

                    Assert.AreEqual(1, result.Count);

                    var newRecord = new TestMapping1();

                    Assert.AreEqual(lastId, result[0].ID);
                    Assert.AreEqual("first name", result[0].FirstName);
                    Assert.AreEqual("updated", result[0].LastName);
                    Assert.AreEqual(Gender.Male, result[0].Gender);
                }
        }
コード例 #5
0
        public void ImplicitInsertIdentityWithSkipOnInsert(
            [IdentityInsertMergeDataContextSource] string context)
        {
            using (var db = GetDataContext(context))
            {
                var table = db.GetTable <TestMappingWithIdentity>();
                table.Delete();

                db.Insert(new TestMappingWithIdentity());

                var lastId = table.Select(_ => _.Id).Max();

                var source = new[]
                {
                    new TestMappingWithIdentity()
                    {
                        Field = 22,
                    },
                    new TestMappingWithIdentity()
                    {
                        Field = 23
                    }
                };

                var rows = table
                           .Merge()
                           .Using(source)
                           .On((s, t) => s.Field == t.Field)
                           .InsertWhenNotMatched()
                           .Merge();

                var result = table.OrderBy(_ => _.Id).ToList();

                AssertRowCount(2, rows, context);

                Assert.AreEqual(3, result.Count);

                var newRecord = new TestMapping1();

                Assert.AreEqual(lastId, result[0].Id);
                Assert.AreEqual(null, result[0].Field);
                Assert.AreEqual(lastId + 1, result[1].Id);
                Assert.AreEqual(22, result[1].Field);
                Assert.AreEqual(lastId + 2, result[2].Id);
                Assert.AreEqual(23, result[2].Field);
            }
        }
コード例 #6
0
        public void Issue1007OnNewAPI(string context)
        {
            using (var db = new TestDataConnection(context))
                using (db.BeginTransaction())
                {
                    var table = db.GetTable <TestMappingWithIdentity>();
                    table.Delete();

                    db.Insert(new TestMappingWithIdentity());

                    var lastId = table.Select(_ => _.Id).Max();

                    var source = new[]
                    {
                        new TestMappingWithIdentity()
                        {
                            Field = 10
                        }
                    };

                    var rows = table
                               .Merge()
                               .Using(source)
                               .On((s, t) => s.Field == null)
                               .InsertWhenNotMatched()
                               .UpdateWhenMatched()
                               .Merge();

                    var result = table.OrderBy(_ => _.Id).ToList();

                    AssertRowCount(1, rows, context);

                    Assert.AreEqual(1, result.Count);

                    var newRecord = new TestMapping1();

                    Assert.AreEqual(lastId, result[0].Id);
                    Assert.AreEqual(10, result[0].Field);
                }
        }