Update CodeFirst

This commit is contained in:
sunkaixuna
2021-10-23 13:30:24 +08:00
parent 89d4505a5a
commit f9d2bfb853
4 changed files with 40 additions and 29 deletions

View File

@@ -47,8 +47,8 @@ namespace SqlSugar
public virtual void InitTables(Type entityType) public virtual void InitTables(Type entityType)
{ {
this.Context.Utilities.RemoveCacheAll(); //this.Context.Utilities.RemoveCacheAll();
this.Context.InitMappingInfo(entityType); this.Context.InitMappingInfoNoCache(entityType);
if (!this.Context.DbMaintenance.IsAnySystemTablePermissions()) if (!this.Context.DbMaintenance.IsAnySystemTablePermissions())
{ {
Check.Exception(true, "Dbfirst and Codefirst requires system table permissions"); Check.Exception(true, "Dbfirst and Codefirst requires system table permissions");
@@ -114,7 +114,7 @@ namespace SqlSugar
#region Core Logic #region Core Logic
protected virtual void Execute(Type entityType) protected virtual void Execute(Type entityType)
{ {
var entityInfo = this.Context.EntityMaintenance.GetEntityInfo(entityType); var entityInfo = this.Context.EntityMaintenance.GetEntityInfoNoCache(entityType);
if (this.DefultLength > 0) if (this.DefultLength > 0)
{ {
foreach (var item in entityInfo.Columns) foreach (var item in entityInfo.Columns)
@@ -139,7 +139,7 @@ namespace SqlSugar
this.Context.MappingTables.Add(entityInfo.EntityName,tableName); this.Context.MappingTables.Add(entityInfo.EntityName,tableName);
entityInfo.DbTableName = tableName; entityInfo.DbTableName = tableName;
entityInfo.Columns.ForEach(it => { it.DbTableName = tableName; }); entityInfo.Columns.ForEach(it => { it.DbTableName = tableName; });
var isAny = this.Context.DbMaintenance.IsAnyTable(tableName); var isAny = this.Context.DbMaintenance.IsAnyTable(tableName,false);
if (isAny&&entityInfo.IsDisabledUpdateAll) if (isAny&&entityInfo.IsDisabledUpdateAll)
{ {
return; return;
@@ -175,7 +175,7 @@ namespace SqlSugar
//Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Multiple primary keys do not support modifications"); //Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Multiple primary keys do not support modifications");
var tableName = GetTableName(entityInfo); var tableName = GetTableName(entityInfo);
var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName); var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName,false);
ConvertColumns(dbColumns); ConvertColumns(dbColumns);
var entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false).ToList(); var entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false).ToList();
var dropColumns = dbColumns var dropColumns = dbColumns

View File

@@ -20,6 +20,12 @@ namespace SqlSugar
string cacheKey = "GetEntityInfo" + type.FullName; string cacheKey = "GetEntityInfo" + type.FullName;
return this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey, return this.Context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey,
() => () =>
{
return GetEntityInfoNoCache(type);
});
}
public EntityInfo GetEntityInfoNoCache(Type type)
{ {
EntityInfo result = new EntityInfo(); EntityInfo result = new EntityInfo();
var sugarAttributeInfo = type.GetTypeInfo().GetCustomAttributes(typeof(SugarTable), true).Where(it => it is SugarTable).SingleOrDefault(); var sugarAttributeInfo = type.GetTypeInfo().GetCustomAttributes(typeof(SugarTable), true).Where(it => it is SugarTable).SingleOrDefault();
@@ -31,7 +37,8 @@ namespace SqlSugar
result.IsDisabledUpdateAll = sugarTable.IsDisabledUpdateAll; result.IsDisabledUpdateAll = sugarTable.IsDisabledUpdateAll;
result.IsDisabledDelete = sugarTable.IsDisabledDelete; result.IsDisabledDelete = sugarTable.IsDisabledDelete;
} }
if (this.Context.Context.CurrentConnectionConfig.ConfigureExternalServices != null && this.Context.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService != null) { if (this.Context.Context.CurrentConnectionConfig.ConfigureExternalServices != null && this.Context.CurrentConnectionConfig.ConfigureExternalServices.EntityNameService != null)
{
if (result.DbTableName == null) if (result.DbTableName == null)
{ {
result.DbTableName = type.Name; result.DbTableName = type.Name;
@@ -43,8 +50,8 @@ namespace SqlSugar
result.Columns = new List<EntityColumnInfo>(); result.Columns = new List<EntityColumnInfo>();
SetColumns(result); SetColumns(result);
return result; return result;
});
} }
public string GetTableName<T>() public string GetTableName<T>()
{ {
var typeName = typeof(T).Name; var typeName = typeof(T).Name;

View File

@@ -162,7 +162,11 @@ namespace SqlSugar
var copyObj = CopyEntityInfo(entityInfo); var copyObj = CopyEntityInfo(entityInfo);
InitMappingInfo(copyObj); InitMappingInfo(copyObj);
} }
public void InitMappingInfoNoCache(Type type)
{
var entityInfo = this.Context.EntityMaintenance.GetEntityInfoNoCache(type);
InitMappingInfo(entityInfo);
}
private EntityInfo CopyEntityInfo(EntityInfo entityInfo) private EntityInfo CopyEntityInfo(EntityInfo entityInfo)
{ {
EntityInfo result = new EntityInfo() EntityInfo result = new EntityInfo()

View File

@@ -14,7 +14,7 @@ namespace SqlSugar
Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Use Code First ,The primary key must not exceed 1"); Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Use Code First ,The primary key must not exceed 1");
var tableName = GetTableName(entityInfo); var tableName = GetTableName(entityInfo);
var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName); var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName,false);
ConvertColumns(dbColumns); ConvertColumns(dbColumns);
var entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false).ToList(); var entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false).ToList();
var dropColumns = dbColumns var dropColumns = dbColumns