Browse Source

CodeFirst support not null default

pull/18/head
sunkaixuan 3 years ago
parent
commit
5bdf1ca4a7
  1. 25
      Src/Asp.NetCore2/SqlSeverTest/UnitTest/UCodeFirst.cs
  2. 19
      Src/Asp.NetCore2/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs

25
Src/Asp.NetCore2/SqlSeverTest/UnitTest/UCodeFirst.cs

@ -15,8 +15,31 @@ namespace OrmTest
Db.DbMaintenance.DropTable("UnitCodeTest1");
Db.CodeFirst.InitTables<UnitCodeTest1>();
Db.CodeFirst.InitTables<UnitCodeFirstpks2>();
if (Db.DbMaintenance.IsAnyTable("UnitCodeFirst131", false))
Db.DbMaintenance.DropTable("UnitCodeFirst131");
Db.CodeFirst.InitTables<UnitCodeFirst131>();
Db.Insertable(new UnitCodeFirst131() { Id = 1 }).ExecuteCommand();
Db.CodeFirst.InitTables<UNITCODEFIRST131>();
Db.CodeFirst.InitTables<UNITCOdEFIRST131>();
}
public class UnitCodeFirst131
{
public int Id { get; set; }
}
public class UNITCODEFIRST131
{
public int Id { get; set; }
[SqlSugar.SugarColumn(DefaultValue ="a")]
public string Name { get; set; }
}
public class UNITCOdEFIRST131
{
public int Id { get; set; }
[SqlSugar.SugarColumn(DefaultValue = "a")]
public string Name { get; set; }
[SqlSugar.SugarColumn(DefaultValue = "getdate()")]
public DateTime dt { get; set; }
}
public class UnitCodeFirstpks2
{
[SqlSugar.SugarColumn(IsPrimaryKey =true)]

19
Src/Asp.NetCore2/SqlSugar/Abstract/DbMaintenanceProvider/Methods.cs

@ -196,8 +196,27 @@ namespace SqlSugar
public virtual bool AddColumn(string tableName, DbColumnInfo columnInfo)
{
tableName = this.SqlBuilder.GetTranslationTableName(tableName);
var isAddNotNUll = columnInfo.IsNullable == false && columnInfo.DefaultValue.HasValue();
if (isAddNotNUll)
{
columnInfo = this.Context.Utilities.TranslateCopy(columnInfo);
columnInfo.IsNullable = true;
}
string sql = GetAddColumnSql(tableName, columnInfo);
this.Context.Ado.ExecuteCommand(sql);
if (isAddNotNUll)
{
var dtColums = this.Context.Queryable<object>().AS(columnInfo.TableName).Where("1=2").ToDataTable().Columns.Cast<System.Data.DataColumn>();
var dtColumInfo = dtColums.First(it => it.ColumnName.EqualCase(columnInfo.DbColumnName));
var type = UtilMethods.GetUnderType(dtColumInfo.DataType);
var value= type==UtilConstants.StringType?(object)"": Activator.CreateInstance(type);
var dt = new Dictionary<string, object>();
dt.Add(columnInfo.DbColumnName, value);
this.Context.Updateable(dt)
.AS(tableName)
.Where($"{columnInfo.DbColumnName} is null ").ExecuteCommand();
UpdateColumn(tableName, columnInfo);
}
return true;
}
public virtual bool UpdateColumn(string tableName, DbColumnInfo column)

Loading…
Cancel
Save