예제 #1
0
        public async Task Relations_Zero_One_And_One_One_Async()
        {
            var db = new Db();
            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient");

            var result = await db.CreateCommand("select * from [dbo].[BaseTable] where id=@id")
                .AddParameter("@id", 5)
                .ReadOneMapToAsync<BaseTable>();

            // zero one
            if (result.ZeroOneId.HasValue)
            {
                var zeroOne = await db.CreateCommand("Select * from [dbo].[ZeroOne] where Id=@id")
                  .AddParameter("@id", result.ZeroOneId)
                  .ReadOneMapToAsync<ZeroOne>();

                result.ZeroOne = zeroOne;
            }

            // one one
            var oneOne = await db.CreateCommand("Select * from [dbo].[OneOne] where Id=@id")
                .AddParameter("@id", result.OneOneId)
                .ReadOneMapToAsync<OneOne>();

            result.OneOne = oneOne;

            Assert.AreEqual(result.Name.TrimEnd(), "Base 2");
            Assert.IsTrue(result.ZeroOneId.HasValue && result.ZeroOneId == 1);
            Assert.AreEqual(result.ZeroOne.Id, 1);
            Assert.AreEqual(result.ZeroOne.Name, "Zero 1");
            Assert.AreEqual(result.OneOneId, 3);
            Assert.AreEqual(result.OneOne.Id, 3);
            Assert.AreEqual(result.OneOne.Name, "One 2");
        }
예제 #2
0
        public void Relations_Zero_One_And_One_One()
        {
            var db = new Db();
            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient");

            var result = db.CreateCommand("select * from [dbo].[BaseTable] where id=@id")
                .AddParameter("@id", 4)
                .ReadOneMapTo<BaseTable>();

            // zero one
            if (result.ZeroOneId.HasValue)
            {
                var zeroOne = db.CreateCommand("Select * from [dbo].[ZeroOne] where Id=@id")
                  .AddParameter("@id", result.ZeroOneId)
                  .ReadOneMapTo<ZeroOne>();

                result.ZeroOne = zeroOne;
            }

            // one one
            var oneOne = db.CreateCommand("Select * from [dbo].[OneOne] where Id=@id")
                .AddParameter("@id", result.OneOneId)
                .ReadOneMapTo<OneOne>();

            result.OneOne = oneOne;

            Assert.AreEqual(result.Name.TrimEnd(), "Base 1");
            Assert.IsFalse(result.ZeroOneId.HasValue);
            Assert.AreEqual(result.OneOneId,2);
            Assert.AreEqual(result.OneOne.Id, 2);
            Assert.AreEqual(result.OneOne.Name, "One 1");
        }
예제 #3
0
        public void Should_Connect_With_OleDb()
        {
            var db = new Db();
            db.Initialize(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\romag\Documents\Visual Studio 2015\Projects\EasyDb\EasyDbTests\NorthWind.mdb", "System.Data.OleDb");

            var count = db.CreateCommand("select count(*) from Categories")
                .Scalar();

            var result = Helper.TryParseToInt(count);
            Assert.IsTrue(result.HasValue && result > 0);
        }
예제 #4
0
        public void Should_Map_One_With_Guid()
        {
            var db = new Db();
            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient");

            var user = db.CreateCommand("select * from [dbo].[UsersWithGuid] where id=@id")
                .AddParameter("@id", "39544cae-1342-4ab4-9d3c-921ffd93ac62")
                .ReadOneMapTo<UserWithGuid>();

            Assert.AreEqual(user.UserName, "Marie");
        }
예제 #5
0
        public void Should_Get_New_Guid_Key()
        {
            var db = new Db();
            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient");

            var newGuid = db.CreateCommand("insert into [dbo].[UsersWithGuid](Name,Email) output INSERTED.Id values(@name,@email)")
                           .AddParameter("@name", "user1")
                           .AddParameter("@email", "*****@*****.**")
                           .Scalar();

            Assert.IsFalse(string.IsNullOrEmpty(newGuid.ToString()));
        }
예제 #6
0
        public void Should_Read_One_With_Guid()
        {
            var db = new Db();
            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient");

            var user = db.CreateCommand("select * from [dbo].[UsersWithGuid] where id=@id")
                .AddParameter("@id", "39544cae-1342-4ab4-9d3c-921ffd93ac62")
                .ReadOne<UserWithGuid>((reader) =>
                {
                    return new UserWithGuid
                    {
                        Id = (Guid)reader["Id"],
                        UserName = (string)reader["Name"]
                    };
                });

            Assert.AreEqual(user.UserName.TrimEnd(), "Marie");
        }
예제 #7
0
        public void Should_Connect_With_SqlClient()
        {
            var db = new Db();
            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient");

            var user = db.CreateCommand("select * from [dbo].[Users] where id=@id")
                .AddParameter("@id", 11)
                .ReadOneMapTo<User>();

            Assert.AreEqual(user.UserName, "Marie");
        }
예제 #8
0
        public void Should_Get_Data_With_OleDb()
        {
            var db = new Db();
            db.Initialize(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\romag\Documents\Visual Studio 2015\Projects\EasyDb\EasyDbTests\NorthWind.mdb", "System.Data.OleDb");

            var category = db.CreateCommand("select * from Categories where id=@id")
                .AddParameter("@id",1)
                .ReadOneMapTo<Category>();

            Assert.AreEqual(category.CategoryName.Trim(), "Beverages");
        }
예제 #9
0
        public void Should_Get_Data_With_MySQL()
        {
            var db = new Db();
            db.Initialize(@"server=localhost;user id=root;database=mydb", "MySql.Data.MySqlClient");

            var user = db.CreateCommand("select * from users where id=@id")
                .AddParameter("@id", 1)
                .ReadOneMapTo<MySQLUser>();

            Assert.AreEqual(user.UserName.Trim(), "Marie");
        }
예제 #10
0
        public void Cannot_Execute_Command_With_Manual_Strategy_And_Connection_Closed()
        {
            bool fail = false;
            var db = new Db();
            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient",ConnectionStrategyType.Manual);

            try
            {
                var users = db.CreateCommand("select * from [dbo].[Users]")
                              .ReadAllMapTo<User>();
            }
            catch (Exception)
            {
                fail = true;
            }
          
            Assert.IsTrue(fail);
        }
예제 #11
0
        public void Each_Db_Have_Own_Connection()
        {
            var db = new Db();
            var db2 = new Db();

            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient", ConnectionStrategyType.Manual);
            db2.Initialize(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\romag\Documents\Visual Studio 2015\Projects\EasyDb\EasyDbTests\NorthWind.mdb", "System.Data.OleDb");

            db.Open();

            Assert.AreEqual(db.Connection.ConnectionString, TestConstants.SqlClientConnectionString);
            Assert.AreEqual(db.Connection.Provider, "System.Data.SqlClient");
            Assert.AreEqual(db.Connection.ConnectionStrategy, ConnectionStrategyType.Manual);
            Assert.AreEqual(db.Connection.State, System.Data.ConnectionState.Open);

            Assert.AreEqual(db2.Connection.ConnectionString, @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\romag\Documents\Visual Studio 2015\Projects\EasyDb\EasyDbTests\NorthWind.mdb");
            Assert.AreEqual(db2.Connection.Provider, "System.Data.OleDb");
            Assert.AreEqual(db2.Connection.ConnectionStrategy, ConnectionStrategyType.Automatic);
            Assert.AreEqual(db2.Connection.State, System.Data.ConnectionState.Closed);

            db.Close();
        }
예제 #12
0
        public void Relations_Many_Many()
        {
            var db = new Db();
            db.Initialize(TestConstants.SqlClientConnectionString, "System.Data.SqlClient");

            var result = db.CreateCommand("select * from [dbo].[BaseTable] where id=@id")
                .AddParameter("@id", 4)
                .ReadOneMapTo<BaseTable>();

            // Many many
            var manyManyList = db.CreateCommand("select * from [dbo].[ManyMany] where BaseTable_Id=@id")
                .AddParameter("@id", 4)
                .ReadAllMapTo<ManyMany>();

            var manyTablesList = new List<ManyTable>();
            foreach (var many in manyManyList)
            {
                var manyTable = db.CreateCommand("select * from [dbo].[ManyTable] where Id=@id")
                    .AddParameter("@id", many.ManyTable_Id)
                    .ReadOneMapTo<ManyTable>();

                manyTablesList.Add(manyTable);
            }
            result.ManyList = manyTablesList;

            Assert.AreEqual(result.ManyList[0].Id, 1);
            Assert.AreEqual(result.ManyList[0].Name, "Many 1");
            Assert.AreEqual(result.ManyList[1].Id, 2);
            Assert.AreEqual(result.ManyList[1].Name, "Many 2");
        }