public void Can_save_DomainUser_references()
        {
            using (var db = OpenDbConnection())
            {
                db.DropTable<ProOrder>();
                db.DropTable<Address>();
                db.DropTable<DomainUser>();

                db.CreateTable<DomainUser>();
                db.CreateTable<ProOrder>();
                db.CreateTable<Address>();

                var user = new DomainUser
                {
                    Id = "UserId",
                    UserType = 1,
                    HomeAddress = new Address
                    {
                        StreetName = "1 Street"
                    },
                    Orders = new List<ProOrder>
                    {
                        new ProOrder { Details = "Order1 Details" },
                        new ProOrder { Details = "Order2 Details" },
                    }
                };

                using (var trans = db.OpenTransaction(IsolationLevel.ReadCommitted))
                {
                    //Same as below in 1 line
                    //db.Save(user, references: true);
                    db.Save(user);
                    db.SaveReferences(user, user.HomeAddress);
                    db.SaveReferences(user, user.Orders);

                    trans.Commit();
                }

                user = db.LoadSingleById<DomainUser>("UserId");
                user.PrintDump();
                Assert.That(user.Orders.Count, Is.EqualTo(2));

                user.UserTypeEnum = UserType.Domain;
                user.HomeAddress.StreetName = "Some new street";
                user.Orders[1].Details = "Nestle Chocolates";
                user.Orders.Add(new ProOrder
                {
                    ProUserId = user.Id,
                    Details = "Reese",
                });

                using (var trans = db.OpenTransaction(IsolationLevel.ReadCommitted))
                {
                    //Same as below in 1 line
                    //db.Save(user, references: true);
                    db.Save(user);
                    db.SaveReferences(user, user.HomeAddress);
                    db.SaveReferences(user, user.Orders);

                    trans.Commit();
                }

                user = db.LoadSingleById<DomainUser>("UserId");
                user.PrintDump();

                Assert.That(user.Orders.Count, Is.EqualTo(3));
            }
        }
Beispiel #2
0
        public void Can_save_DomainUser_references()
        {
            using (var db = OpenDbConnection())
            {
                db.DropTable<ProOrder>();
                db.DropTable<Address>();
                db.DropTable<DomainUser>();

                db.CreateTable<DomainUser>();
                db.CreateTable<ProOrder>();
                db.CreateTable<Address>();

                var user = new DomainUser
                {
                    Id = "UserId",
                    UserType = 1,
                    HomeAddress = new Address
                    {
                        StreetName = "1 Street"
                    },
                    Orders = new List<ProOrder>
                    {
                        new ProOrder { Details = "Order1 Details" },
                        new ProOrder { Details = "Order2 Details" },
                    }
                };

#if NETCORE
                var isolationLevel = base.Dialect == Dialect.Sqlite ? IsolationLevel.Serializable : IsolationLevel.ReadCommitted;
#else
                var isolationLevel = IsolationLevel.ReadCommitted;
#endif                

                using (var trans = db.OpenTransaction(isolationLevel))
                {
                    //Same as below in 1 line
                    //db.Save(user, references: true);
                    db.Save(user);
                    db.SaveReferences(user, user.HomeAddress);
                    db.SaveReferences(user, user.Orders);

                    trans.Commit();
                }

                user = db.LoadSingleById<DomainUser>("UserId");
                user.PrintDump();
                Assert.That(user.Orders.Count, Is.EqualTo(2));

                user.UserTypeEnum = UserType.Domain;
                user.HomeAddress.StreetName = "Some new street";
                user.Orders[1].Details = "Nestle Chocolates";
                user.Orders.Add(new ProOrder
                {
                    ProUserId = user.Id,
                    Details = "Reese",
                });

                using (var trans = db.OpenTransaction(isolationLevel))
                {
                    //Same as below in 1 line
                    //db.Save(user, references: true);
                    db.Save(user);
                    db.SaveReferences(user, user.HomeAddress);
                    db.SaveReferences(user, user.Orders);

                    trans.Commit();
                }

                user = db.LoadSingleById<DomainUser>("UserId");
                user.PrintDump();

                Assert.That(user.Orders.Count, Is.EqualTo(3));
            }
        }