mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
- 修复 参数化 Column DbType 设置特殊值时的类型判断;
This commit is contained in:
parent
d951b475d9
commit
824d60cbb2
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user