mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	- 修复 参数化 Column DbType 设置特殊值时的类型判断;
This commit is contained in:
		@@ -11,6 +11,51 @@ namespace FreeSql.Tests.MySqlConnector
 | 
			
		||||
{
 | 
			
		||||
    public class MySqlCodeFirstTest
 | 
			
		||||
    {
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void DateTime_1()
 | 
			
		||||
        {
 | 
			
		||||
            var item1 = new TS_DATETIME01 { CreateTime = DateTime.Now };
 | 
			
		||||
            Assert.Equal(1, g.mysql.Insert(item1).ExecuteAffrows());
 | 
			
		||||
 | 
			
		||||
            var item2 = g.mysql.Select<TS_DATETIME01>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
 | 
			
		||||
            item1.CreateTime = DateTime.Now;
 | 
			
		||||
            Assert.Equal(1, g.mysql.Update<TS_DATETIME01>().SetSource(item1).ExecuteAffrows());
 | 
			
		||||
            item2 = g.mysql.Select<TS_DATETIME01>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
        }
 | 
			
		||||
        class TS_DATETIME01
 | 
			
		||||
        {
 | 
			
		||||
            public Guid Id { get; set; }
 | 
			
		||||
            [Column(DbType = "datetime NULL")]
 | 
			
		||||
            public DateTime? CreateTime { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void DateTime_2()
 | 
			
		||||
        {
 | 
			
		||||
            var item1 = new TS_DATETIME02 { CreateTime = DateTime.Now };
 | 
			
		||||
            Assert.Equal(1, g.mysql.Insert(item1).ExecuteAffrows());
 | 
			
		||||
 | 
			
		||||
            var item2 = g.mysql.Select<TS_DATETIME02>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
 | 
			
		||||
            item1.CreateTime = DateTime.Now;
 | 
			
		||||
            Assert.Equal(1, g.mysql.Update<TS_DATETIME02>().SetSource(item1).ExecuteAffrows());
 | 
			
		||||
            item2 = g.mysql.Select<TS_DATETIME02>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
        }
 | 
			
		||||
        class TS_DATETIME02
 | 
			
		||||
        {
 | 
			
		||||
            public Guid Id { get; set; }
 | 
			
		||||
            [Column(DbType = "datetime NOT NULL")]
 | 
			
		||||
            public DateTime? CreateTime { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void Text_StringLength_1()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,51 @@ namespace FreeSql.Tests.MySql
 | 
			
		||||
{
 | 
			
		||||
    public class MySqlCodeFirstTest
 | 
			
		||||
    {
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void DateTime_1()
 | 
			
		||||
        {
 | 
			
		||||
            var item1 = new TS_DATETIME01 { CreateTime = DateTime.Now };
 | 
			
		||||
            Assert.Equal(1, g.mysql.Insert(item1).ExecuteAffrows());
 | 
			
		||||
 | 
			
		||||
            var item2 = g.mysql.Select<TS_DATETIME01>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
 | 
			
		||||
            item1.CreateTime = DateTime.Now;
 | 
			
		||||
            Assert.Equal(1, g.mysql.Update<TS_DATETIME01>().SetSource(item1).ExecuteAffrows());
 | 
			
		||||
            item2 = g.mysql.Select<TS_DATETIME01>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
        }
 | 
			
		||||
        class TS_DATETIME01
 | 
			
		||||
        {
 | 
			
		||||
            public Guid Id { get; set; }
 | 
			
		||||
            [Column(DbType = "datetime NULL")]
 | 
			
		||||
            public DateTime? CreateTime { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void DateTime_2()
 | 
			
		||||
        {
 | 
			
		||||
            var item1 = new TS_DATETIME02 { CreateTime = DateTime.Now };
 | 
			
		||||
            Assert.Equal(1, g.mysql.Insert(item1).ExecuteAffrows());
 | 
			
		||||
 | 
			
		||||
            var item2 = g.mysql.Select<TS_DATETIME02>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
 | 
			
		||||
            item1.CreateTime = DateTime.Now;
 | 
			
		||||
            Assert.Equal(1, g.mysql.Update<TS_DATETIME02>().SetSource(item1).ExecuteAffrows());
 | 
			
		||||
            item2 = g.mysql.Select<TS_DATETIME02>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
        }
 | 
			
		||||
        class TS_DATETIME02
 | 
			
		||||
        {
 | 
			
		||||
            public Guid Id { get; set; }
 | 
			
		||||
            [Column(DbType = "datetime NOT NULL")]
 | 
			
		||||
            public DateTime? CreateTime { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void Text_StringLength_1()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,51 @@ namespace FreeSql.Tests.PostgreSQL
 | 
			
		||||
{
 | 
			
		||||
    public class PostgreSQLCodeFirstTest
 | 
			
		||||
    {
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void DateTime_1()
 | 
			
		||||
        {
 | 
			
		||||
            var item1 = new TS_DATETIME01 { CreateTime = DateTime.Now };
 | 
			
		||||
            Assert.Equal(1, g.pgsql.Insert(item1).ExecuteAffrows());
 | 
			
		||||
 | 
			
		||||
            var item2 = g.pgsql.Select<TS_DATETIME01>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
 | 
			
		||||
            item1.CreateTime = DateTime.Now;
 | 
			
		||||
            Assert.Equal(1, g.pgsql.Update<TS_DATETIME01>().SetSource(item1).ExecuteAffrows());
 | 
			
		||||
            item2 = g.pgsql.Select<TS_DATETIME01>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
        }
 | 
			
		||||
        class TS_DATETIME01
 | 
			
		||||
        {
 | 
			
		||||
            public Guid Id { get; set; }
 | 
			
		||||
            [Column(DbType = "timestamp NULL")]
 | 
			
		||||
            public DateTime? CreateTime { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void DateTime_2()
 | 
			
		||||
        {
 | 
			
		||||
            var item1 = new TS_DATETIME02 { CreateTime = DateTime.Now };
 | 
			
		||||
            Assert.Equal(1, g.pgsql.Insert(item1).ExecuteAffrows());
 | 
			
		||||
 | 
			
		||||
            var item2 = g.pgsql.Select<TS_DATETIME02>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
 | 
			
		||||
            item1.CreateTime = DateTime.Now;
 | 
			
		||||
            Assert.Equal(1, g.pgsql.Update<TS_DATETIME02>().SetSource(item1).ExecuteAffrows());
 | 
			
		||||
            item2 = g.pgsql.Select<TS_DATETIME02>().Where(a => a.Id == item1.Id).First();
 | 
			
		||||
            Assert.NotNull(item2.CreateTime);
 | 
			
		||||
            Assert.True(1 > Math.Abs(item2.CreateTime.Value.Subtract(item1.CreateTime.Value).TotalSeconds));
 | 
			
		||||
        }
 | 
			
		||||
        class TS_DATETIME02
 | 
			
		||||
        {
 | 
			
		||||
            public Guid Id { get; set; }
 | 
			
		||||
            [Column(DbType = "timestamp NOT NULL")]
 | 
			
		||||
            public DateTime? CreateTime { get; set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void Blob()
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -453,12 +453,12 @@ namespace FreeSql.Internal
 | 
			
		||||
            foreach (var col in trytb.Primarys)
 | 
			
		||||
            {
 | 
			
		||||
                col.Attribute.IsNullable = false;
 | 
			
		||||
                col.Attribute.DbType = col.Attribute.DbType.Replace("NOT NULL", "").Trim();
 | 
			
		||||
                col.Attribute.DbType = col.Attribute.DbType.Replace("NOT NULL", "").Replace(" NULL", "").Trim();
 | 
			
		||||
            }
 | 
			
		||||
            foreach (var col in trytb.Columns.Values)
 | 
			
		||||
            {
 | 
			
		||||
                var ltp = @"\(([^\)]+)\)";
 | 
			
		||||
                col.DbTypeText = Regex.Replace(col.Attribute.DbType.Replace("NOT NULL", "").Trim(), ltp, "");
 | 
			
		||||
                col.DbTypeText = Regex.Replace(col.Attribute.DbType.Replace("NOT NULL", "").Replace(" NULL", "").Trim(), ltp, "");
 | 
			
		||||
                var m = Regex.Match(col.Attribute.DbType, ltp);
 | 
			
		||||
                if (m.Success == false) continue;
 | 
			
		||||
                var sizeStr = m.Groups[1].Value.Trim();
 | 
			
		||||
@@ -884,7 +884,7 @@ namespace FreeSql.Internal
 | 
			
		||||
                            foreach (var col in tbmid.Primarys)
 | 
			
		||||
                            {
 | 
			
		||||
                                col.Attribute.IsNullable = false;
 | 
			
		||||
                                col.Attribute.DbType = col.Attribute.DbType.Replace("NOT NULL", "").Trim();
 | 
			
		||||
                                col.Attribute.DbType = col.Attribute.DbType.Replace("NOT NULL", "").Replace(" NULL", "").Trim();
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ namespace FreeSql.Oracle
 | 
			
		||||
            var ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), OracleDbType = dbtype, Value = value };
 | 
			
		||||
            if (col != null)
 | 
			
		||||
            {
 | 
			
		||||
                var dbtype2 = (OracleDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeTextFull = col.Attribute.DbType.Replace("NOT NULL", "").Trim(), DbTypeText = col.DbTypeText });
 | 
			
		||||
                var dbtype2 = (OracleDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeTextFull = col.Attribute.DbType.Replace("NOT NULL", "").Replace(" NULL", "").Trim(), DbTypeText = col.DbTypeText });
 | 
			
		||||
                switch (dbtype2)
 | 
			
		||||
                {
 | 
			
		||||
                    case OracleDbType.Char:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user