- 修复 参数化 Column DbType 设置特殊值时的类型判断;

This commit is contained in:
28810 2020-08-24 13:35:48 +08:00
parent d951b475d9
commit 824d60cbb2
5 changed files with 139 additions and 4 deletions

View File

@ -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()
{

View File

@ -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()
{

View File

@ -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()
{

View File

@ -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();
}
}
}

View File

@ -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: