public void ExternalTransactionComplete()
        {
            using (var scope = Database.GetTransaction())
            {
                var user = new UserDecorated
                {
                    Name = "Name" + 16,
                    Age = 20 + 16,
                    DateOfBirth = new DateTime(1970, 1, 1).AddYears(16),
                    Savings = 50.00m + (1.01m * 16)
                };
                InMemoryUsers.Add(user);
                Database.Insert(user);

                var extra = new ExtraUserInfoDecorated
                {
                    UserId = user.UserId,
                    Email = "email" + 16 + "@email.com",
                    Children = 16
                };
                InMemoryExtraUserInfos.Add(extra);
                Database.Insert(extra);

                scope.Complete();
            }

            var count = Database.ExecuteScalar<long>("SELECT COUNT(*) FROM Users");
            Assert.AreEqual(count, 16);
        }
Esempio n. 2
0
 protected void AssertUserValues(UserDecorated expected, UserDecorated actual)
 {
     Assert.AreEqual(expected.UserId, actual.UserId);
     Assert.AreEqual(expected.Name, actual.Name);
     Assert.AreEqual(expected.Age, actual.Age);
     Assert.AreEqual(expected.DateOfBirth, actual.DateOfBirth);
     Assert.AreEqual(expected.Savings, actual.Savings);
 }
Esempio n. 3
0
 protected void AssertUserValues(UserDecorated expected, UserDecorated actual)
 {
     Assert.AreEqual(expected.UserId, actual.UserId);
     Assert.AreEqual(expected.Name, actual.Name);
     Assert.AreEqual(expected.Age, actual.Age);
     Assert.AreEqual(expected.DateOfBirth, actual.DateOfBirth);
     Assert.AreEqual(expected.Savings, actual.Savings);
 }
        public void SingleInto()
        {
            var u = new UserDecorated();
            var user = Database.SingleInto(u, "select u.* from users u where u.userid = 1");

            AssertUserValues(InMemoryUsers[0], user);
            Assert.AreEqual(u, user);
        }
        public void SingleOrDefaultIntoWithNoRecord()
        {
            var u = new UserDecorated();
            var user = Database.SingleOrDefaultInto(u, "select u.* from users u where u.userid = -1");

            AssertUserValues(u, new UserDecorated());
            Assert.Null(user);
        }
Esempio n. 6
0
        protected void InsertData()
        {
            InMemoryUsers            = new List <UserDecorated>();
            InMemoryExtraUserInfos   = new List <ExtraUserInfoDecorated>();
            InMemoryCompositeObjects = new List <CompositeObjectDecorated>();

            for (var i = 0; i < 15; i++)
            {
                var pos = i + 1;

                var user = new UserDecorated
                {
                    Name        = "Name" + (i + 1),
                    Age         = 20 + (i + 1),
                    DateOfBirth = new DateTime(1970, 1, 1).AddYears(i + 1),
                    Savings     = 50.00m + (1.01m * (i + 1)),
                    IsMale      = (i % 2 == 0)
                };
                Database.Insert(user);
                InMemoryUsers.Add(user);

                var extra = new ExtraUserInfoDecorated
                {
                    UserId   = user.UserId,
                    Email    = "email" + (i + 1) + "@email.com",
                    Children = (i + 1)
                };
                Database.Insert(extra);
                InMemoryExtraUserInfos.Add(extra);

                var composite = new CompositeObjectDecorated
                {
                    Key1ID      = pos,
                    Key2ID      = i + 2,
                    Key3ID      = i + 4,
                    TextData    = "This is some text data.",
                    DateEntered = DateTime.Now
                };
                Database.Insert(composite);
                InMemoryCompositeObjects.Add(composite);
            }

            // Verify DB record counts
            var userCount = Database.ExecuteScalar <int>("SELECT COUNT(UserId) FROM Users");

            Assert.AreEqual(InMemoryUsers.Count, userCount, "Test User Data not in sync db has " + userCount + " records, but the in memory copy has only " + InMemoryUsers.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + userCount + " test users for the unit tests.");

            var userExtraInfoCount = Database.ExecuteScalar <int>("SELECT COUNT(ExtraUserInfoId) FROM ExtraUserInfos");

            Assert.AreEqual(InMemoryExtraUserInfos.Count, userExtraInfoCount, "Test User Extra Info Data not in sync db has " + userExtraInfoCount + " records, but the in memory copy has only " + InMemoryExtraUserInfos.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + userExtraInfoCount + " test extra user info records for the unit tests.");

            var compositeObjectCount = Database.ExecuteScalar <int>("SELECT COUNT(Key1ID) FROM CompositeObjects");

            Assert.AreEqual(InMemoryCompositeObjects.Count, compositeObjectCount, "Test Composite Object Data not in sync db has " + compositeObjectCount + " records, but the in memory copy has only " + InMemoryCompositeObjects.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + compositeObjectCount + " test composite PK objects for the unit tests.");
        }
Esempio n. 7
0
        protected void InsertData()
        {
            InMemoryUsers = new List<UserDecorated>();
            InMemoryExtraUserInfos = new List<ExtraUserInfoDecorated>();
            InMemoryCompositeObjects = new List<CompositeObjectDecorated>();

            for (var i = 0; i < 15; i++)
            {
                var pos = i + 1;

                var user = new UserDecorated
                {
                    Name = "Name" + (i + 1),
                    Age = 20 + (i + 1),
                    DateOfBirth = new DateTime(1970, 1, 1).AddYears(i + 1),
                    Savings = 50.00m + (1.01m * (i + 1)),
                    IsMale = (i%2==0)
                };
                Database.Insert(user);
                InMemoryUsers.Add(user);

                var extra = new ExtraUserInfoDecorated
                {
                    UserId = user.UserId,
                    Email = "email" + (i + 1) + "@email.com",
                    Children = (i + 1)
                };
                Database.Insert(extra);
                InMemoryExtraUserInfos.Add(extra);

                var composite = new CompositeObjectDecorated
                {
                    Key1ID = pos,
                    Key2ID = i + 2,
                    Key3ID = i + 4,
                    TextData = "This is some text data.",
                    DateEntered = DateTime.Now
                };
                Database.Insert(composite);
                InMemoryCompositeObjects.Add(composite);
            }

            // Verify DB record counts
            var userCount = Database.ExecuteScalar<int>("SELECT COUNT(UserId) FROM Users");
            Assert.AreEqual(InMemoryUsers.Count, userCount, "Test User Data not in sync db has " + userCount + " records, but the in memory copy has only " + InMemoryUsers.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + userCount + " test users for the unit tests.");

            var userExtraInfoCount = Database.ExecuteScalar<int>("SELECT COUNT(ExtraUserInfoId) FROM ExtraUserInfos");
            Assert.AreEqual(InMemoryExtraUserInfos.Count, userExtraInfoCount, "Test User Extra Info Data not in sync db has " + userExtraInfoCount + " records, but the in memory copy has only " + InMemoryExtraUserInfos.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + userExtraInfoCount + " test extra user info records for the unit tests.");

            var compositeObjectCount = Database.ExecuteScalar<int>("SELECT COUNT(Key1ID) FROM CompositeObjects");
            Assert.AreEqual(InMemoryCompositeObjects.Count, compositeObjectCount, "Test Composite Object Data not in sync db has " + compositeObjectCount + " records, but the in memory copy has only " + InMemoryCompositeObjects.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + compositeObjectCount + " test composite PK objects for the unit tests.");
        }
Esempio n. 8
0
        public void SavePrimaryKeyAutoIncrementNew()
        {
            const string dataName = "John Doe";
            const int dataAge = 56;
            const decimal dataSavings = (decimal)345.23;
            var dataDateOfBirth = DateTime.Now;

            var poco = new UserDecorated();
            poco.Name = dataName;
            poco.Age = dataAge;
            poco.Savings = dataSavings;
            poco.DateOfBirth = dataDateOfBirth;
            Database.Save<UserDecorated>(poco);

            Assert.IsTrue(poco.UserId > 0, "POCO failed to Save.");

            var verify = Database.SingleOrDefaultById<UserDecorated>(poco.UserId);
            Assert.IsNotNull(verify);

            Assert.AreEqual(poco.UserId, verify.UserId);
            Assert.AreEqual(dataName, verify.Name);
            Assert.AreEqual(dataAge, verify.Age);
            Assert.AreEqual(dataSavings, verify.Savings);
        }
 public void SingleIntoWithNoRecord()
 {
     var u = new UserDecorated();
     Assert.Throws<InvalidOperationException>(() => Database.SingleInto(u, "select u.* from users u where u.userid = -1"));
 }
Esempio n. 10
0
        protected void InsertData()
        {
            InMemoryUsers            = new List <UserDecorated>();
            InMemoryExtraUserInfos   = new List <ExtraUserInfoDecorated>();
            InMemoryCompositeObjects = new List <CompositeObjectDecorated>();
            InMemoryHouses           = new List <HouseDecorated>();

            for (var i = 0; i < 5; i++)
            {
                var house = new HouseDecorated()
                {
                    Address = i + " Road Street, Suburb"
                };
                Database.Insert(house);
                InMemoryHouses.Add(house);
            }

            for (var i = 0; i < 15; i++)
            {
                var pos = i + 1;

                var user = new UserDecorated
                {
                    Name        = "Name" + (i + 1),
                    Age         = 20 + (i + 1),
                    DateOfBirth = new DateTime(1970, 1, 1).AddYears(i + 1),
                    Savings     = 50.00m + (1.01m * (i + 1)),
                    IsMale      = (i % 2 == 0),
                    HouseId     = i % 2 == 0 ? (int?)null : InMemoryHouses[i % 5].HouseId
                };
                Database.Insert(user);
                InMemoryUsers.Add(user);

                var extra = new ExtraUserInfoDecorated
                {
                    UserId   = user.UserId,
                    Email    = "email" + (i + 1) + "@email.com",
                    Children = (i + 1)
                };
                Database.Insert(extra);
                InMemoryExtraUserInfos.Add(extra);

                var composite = new CompositeObjectDecorated
                {
                    Key1ID      = pos,
                    Key2ID      = i + 2,
                    Key3ID      = i + 4,
                    TextData    = "This is some text data.",
                    DateEntered = DateTime.Now
                };
                Database.Insert(composite);
                InMemoryCompositeObjects.Add(composite);

                var recursionUser = new RecursionUser
                {
                    Name      = "Name" + (i + 1),
                    CreatedBy = new RecursionUser()
                    {
                        Id = 1
                    },
                    Supervisor = new RecursionUser()
                    {
                        Id = 2
                    }
                };
                Database.Insert(recursionUser);

                var one = new One()
                {
                    Name = "Name" + (i + 1),
                };
                Database.Insert(one);

                for (int j = 0; j < (i % 3); j++)
                {
                    var many = new Many()
                    {
                        OneId    = one.OneId,
                        Currency = "Cur" + (i + j + 1),
                        AValue   = (i + j + 1)
                    };
                    Database.Insert(many);
                }

                var userWithAddress = new UserWithAddress()
                {
                    Name    = "Name" + (i + 1),
                    Address = new UserWithAddress.MyAddress()
                    {
                        StreetNo           = i + 1,
                        StreetName         = "Street" + (i + 1),
                        MovedInOn          = new DateTime(1970, 1, 1).AddYears(i + 1),
                        AddressFurtherInfo = new UserWithAddress.MyAddress.AddressInfo()
                        {
                            PostCode = "99999"
                        }
                    }
                };

                Database.Insert(userWithAddress);
            }

            // Verify DB record counts
            var userCount = Database.ExecuteScalar <int>("SELECT COUNT(UserId) FROM Users");

            Assert.AreEqual(InMemoryUsers.Count, userCount, "Test User Data not in sync db has " + userCount + " records, but the in memory copy has only " + InMemoryUsers.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + userCount + " test users for the unit tests.");

            var userExtraInfoCount = Database.ExecuteScalar <int>("SELECT COUNT(ExtraUserInfoId) FROM ExtraUserInfos");

            Assert.AreEqual(InMemoryExtraUserInfos.Count, userExtraInfoCount, "Test User Extra Info Data not in sync db has " + userExtraInfoCount + " records, but the in memory copy has only " + InMemoryExtraUserInfos.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + userExtraInfoCount + " test extra user info records for the unit tests.");

            var compositeObjectCount = Database.ExecuteScalar <int>("SELECT COUNT(Key1_ID) FROM CompositeObjects");

            Assert.AreEqual(InMemoryCompositeObjects.Count, compositeObjectCount, "Test Composite Object Data not in sync db has " + compositeObjectCount + " records, but the in memory copy has only " + InMemoryCompositeObjects.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + compositeObjectCount + " test composite PK objects for the unit tests.");
        }
Esempio n. 11
0
        public void NestedTransactionThatFailsAbortsWholeUsingBeginAbort()
        {
            Database.BeginTransaction();
            Database.BeginTransaction();


            var user1 = new UserDecorated
            {
                Name = "Name" + 16,
                Age = 20 + 16,
                DateOfBirth = new DateTime(1970, 1, 1).AddYears(16),
                Savings = 50.00m + (1.01m * 16)
            };
            InMemoryUsers.Add(user1);
            Database.Insert(user1);

            var extra1 = new ExtraUserInfoDecorated
            {
                UserId = user1.UserId,
                Email = "email" + 16 + "@email.com",
                Children = 16
            };
            InMemoryExtraUserInfos.Add(extra1);
            Database.Insert(extra1);

            Database.AbortTransaction();

            var user = new UserDecorated
            {
                Name = "Name" + 16,
                Age = 20 + 16,
                DateOfBirth = new DateTime(1970, 1, 1).AddYears(16),
                Savings = 50.00m + (1.01m * 16)
            };
            InMemoryUsers.Add(user);
            Database.Insert(user);

            var extra = new ExtraUserInfoDecorated
            {
                UserId = user.UserId,
                Email = "email" + 16 + "@email.com",
                Children = 16
            };
            InMemoryExtraUserInfos.Add(extra);
            Database.Insert(extra);

            Database.CompleteTransaction();

            var count = Database.ExecuteScalar<long>("SELECT COUNT(*) FROM Users");
            Assert.AreEqual(15, count);
        }
Esempio n. 12
0
        public void TransactionSettingsDontCauseLocksAndTransationRollback()
        {
            var nameInsert = "Name" + 16;
            var ageInsert = 20 + 16;
            var nameUpdate = "Name" + 99;
            var ageUpdate = 20 + 99;

            var user = new UserDecorated
            {
                Name = nameInsert,
                Age = ageInsert,
                DateOfBirth = new DateTime(1970, 1, 1).AddYears(16),
                Savings = 50.00m + (1.01m * 16)
            };
            Database.Insert(user);

            var userAfterCreate = Database.SingleOrDefault<UserDecorated>("WHERE UserID = @0", user.UserId);
            Assert.IsNotNull(userAfterCreate);
            Assert.AreEqual(userAfterCreate.Name, nameInsert);


            var dbTrans = new Database(TestDatabase.ConnectionString, TestDatabase.DbType);
            dbTrans.BeginTransaction();

            user.Name = nameUpdate;
            user.Age = ageUpdate;
            dbTrans.Update(user);

            // Verify inside of transaction
            var userPreCommitInside = dbTrans.SingleOrDefault<UserDecorated>("WHERE UserID = @0", user.UserId);
            Assert.IsNotNull(userPreCommitInside);
            Assert.AreEqual(nameUpdate, userPreCommitInside.Name);
            Assert.AreEqual(ageUpdate, userPreCommitInside.Age);

            dbTrans.AbortTransaction();
            dbTrans.Dispose();

            var userPostCommit = Database.SingleOrDefault<UserDecorated>("WHERE UserID = @0", user.UserId);
            Assert.IsNotNull(userPostCommit);
            Assert.AreEqual(nameInsert, userPostCommit.Name);
            Assert.AreEqual(ageInsert, userPostCommit.Age);
        }
Esempio n. 13
0
        protected void InsertData()
        {
            InMemoryUsers = new List<UserDecorated>();
            InMemoryExtraUserInfos = new List<ExtraUserInfoDecorated>();
            InMemoryCompositeObjects = new List<CompositeObjectDecorated>();
            InMemoryHouses = new List<HouseDecorated>();

            for (var i = 0; i < 5; i++)
            {
                var house = new HouseDecorated()
                {
                    Address = i + " Road Street, Suburb"
                };
                Database.Insert(house);
                InMemoryHouses.Add(house);
            }

            for (var i = 0; i < 15; i++)
            {
                var pos = i + 1;

                var user = new UserDecorated
                {
                    Name = "Name" + (i + 1),
                    Age = 20 + (i + 1),
                    DateOfBirth = new DateTime(1970, 1, 1).AddYears(i + 1),
                    Savings = 50.00m + (1.01m * (i + 1)),
                    IsMale = (i%2==0),
                    HouseId = i % 2 == 0 ? (int?)null : InMemoryHouses[i % 5].HouseId
                };
                Database.Insert(user);
                InMemoryUsers.Add(user);

                var extra = new ExtraUserInfoDecorated
                {
                    UserId = user.UserId,
                    Email = "email" + (i + 1) + "@email.com",
                    Children = (i + 1)
                };
                Database.Insert(extra);
                InMemoryExtraUserInfos.Add(extra);

                var composite = new CompositeObjectDecorated
                {
                    Key1ID = pos,
                    Key2ID = i + 2,
                    Key3ID = i + 4,
                    TextData = "This is some text data.",
                    DateEntered = DateTime.Now
                };
                Database.Insert(composite);
                InMemoryCompositeObjects.Add(composite);

                var recursionUser = new RecursionUser
                {
                    Name = "Name" + (i + 1),
                    CreatedBy = new RecursionUser() {Id = 1},
                    Supervisor = new RecursionUser() {Id = 2}
                };
                Database.Insert(recursionUser);

                var one = new One()
                {
                    Name = "Name" + (i + 1),
                };
                Database.Insert(one);

                for (int j = 0; j < (i%3); j++)
                {
                    var many = new Many()
                    {
                        OneId = one.OneId,
                        Currency = "Cur" + (i + j + 1),
                        Value = (i + j + 1)
                    };
                    Database.Insert(many);
                }

                var userWithAddress = new UserWithAddress()
                {
                    Name = "Name" + (i + 1),
                    Address = new UserWithAddress.MyAddress()
                    {
                        StreetNo = i + 1,
                        StreetName = "Street" + (i + 1),
                        MovedInOn = new DateTime(1970, 1, 1).AddYears(i + 1),
                        AddressFurtherInfo = new UserWithAddress.MyAddress.AddressInfo()
                        {
                            PostCode = "99999"
                        }
                    }
                };

                Database.Insert(userWithAddress);
            }

            // Verify DB record counts
            var userCount = Database.ExecuteScalar<int>("SELECT COUNT(UserId) FROM Users");
            Assert.AreEqual(InMemoryUsers.Count, userCount, "Test User Data not in sync db has " + userCount + " records, but the in memory copy has only " + InMemoryUsers.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + userCount + " test users for the unit tests.");

            var userExtraInfoCount = Database.ExecuteScalar<int>("SELECT COUNT(ExtraUserInfoId) FROM ExtraUserInfos");
            Assert.AreEqual(InMemoryExtraUserInfos.Count, userExtraInfoCount, "Test User Extra Info Data not in sync db has " + userExtraInfoCount + " records, but the in memory copy has only " + InMemoryExtraUserInfos.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + userExtraInfoCount + " test extra user info records for the unit tests.");

            var compositeObjectCount = Database.ExecuteScalar<int>("SELECT COUNT(Key1_ID) FROM CompositeObjects");
            Assert.AreEqual(InMemoryCompositeObjects.Count, compositeObjectCount, "Test Composite Object Data not in sync db has " + compositeObjectCount + " records, but the in memory copy has only " + InMemoryCompositeObjects.Count + " records.");
            System.Diagnostics.Debug.WriteLine("Created " + compositeObjectCount + " test composite PK objects for the unit tests.");
        }