mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-22 20:13:41 +08:00
Update .net core project
This commit is contained in:
@@ -10,10 +10,12 @@ namespace SqlSugar
|
||||
public partial class CodeFirstProvider : ICodeFirst
|
||||
{
|
||||
#region Properties
|
||||
internal static object LockObject = new object();
|
||||
public virtual SqlSugarProvider Context { get; set; }
|
||||
protected bool IsBackupTable { get; set; }
|
||||
protected int MaxBackupDataRows { get; set; }
|
||||
protected virtual int DefultLength { get; set; }
|
||||
protected Dictionary<Type, string> MappingTables = new Dictionary<Type, string>();
|
||||
public CodeFirstProvider()
|
||||
{
|
||||
if (DefultLength == 0)
|
||||
@@ -46,29 +48,36 @@ namespace SqlSugar
|
||||
|
||||
public virtual void InitTables(Type entityType)
|
||||
{
|
||||
|
||||
//this.Context.Utilities.RemoveCacheAll();
|
||||
this.Context.InitMappingInfoNoCache(entityType);
|
||||
if (!this.Context.DbMaintenance.IsAnySystemTablePermissions())
|
||||
//Prevent concurrent requests if used in your program
|
||||
lock (CodeFirstProvider.LockObject)
|
||||
{
|
||||
Check.Exception(true, "Dbfirst and Codefirst requires system table permissions");
|
||||
}
|
||||
Check.Exception(this.Context.IsSystemTablesConfig, "Please set SqlSugarClent Parameter ConnectionConfig.InitKeyType=InitKeyType.Attribute ");
|
||||
MappingTableList oldTableList = CopyMappingTalbe();
|
||||
//this.Context.Utilities.RemoveCacheAll();
|
||||
this.Context.InitMappingInfoNoCache(entityType);
|
||||
if (!this.Context.DbMaintenance.IsAnySystemTablePermissions())
|
||||
{
|
||||
Check.Exception(true, "Dbfirst and Codefirst requires system table permissions");
|
||||
}
|
||||
Check.Exception(this.Context.IsSystemTablesConfig, "Please set SqlSugarClent Parameter ConnectionConfig.InitKeyType=InitKeyType.Attribute ");
|
||||
|
||||
if (this.Context.Ado.Transaction == null)
|
||||
{
|
||||
var executeResult = Context.Ado.UseTran(() =>
|
||||
if (this.Context.Ado.Transaction == null)
|
||||
{
|
||||
var executeResult = Context.Ado.UseTran(() =>
|
||||
{
|
||||
Execute(entityType);
|
||||
});
|
||||
Check.Exception(!executeResult.IsSuccess, executeResult.ErrorMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
Execute(entityType);
|
||||
});
|
||||
Check.Exception(!executeResult.IsSuccess, executeResult.ErrorMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
Execute(entityType);
|
||||
}
|
||||
|
||||
RestMappingTables(oldTableList);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void InitTables<T>()
|
||||
{
|
||||
InitTables(typeof(T));
|
||||
@@ -107,6 +116,23 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
}
|
||||
public ICodeFirst As(Type type, string newTableName)
|
||||
{
|
||||
if (!MappingTables.ContainsKey(type))
|
||||
{
|
||||
MappingTables.Add(type,newTableName);
|
||||
}
|
||||
else
|
||||
{
|
||||
MappingTables[type]= newTableName;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
public ICodeFirst As<T>(string newTableName)
|
||||
{
|
||||
return As(typeof(T),newTableName);
|
||||
}
|
||||
|
||||
public virtual void InitTables(string entitiesNamespace)
|
||||
{
|
||||
var types = Assembly.Load(entitiesNamespace).GetTypes();
|
||||
@@ -180,6 +206,11 @@ namespace SqlSugar
|
||||
protected virtual void Execute(Type entityType)
|
||||
{
|
||||
var entityInfo = this.Context.EntityMaintenance.GetEntityInfoNoCache(entityType);
|
||||
if (this.MappingTables.ContainsKey(entityType))
|
||||
{
|
||||
entityInfo.DbTableName = this.MappingTables[entityType];
|
||||
this.Context.MappingTables.Add(entityInfo.EntityName, entityInfo.DbTableName);
|
||||
}
|
||||
if (this.DefultLength > 0)
|
||||
{
|
||||
foreach (var item in entityInfo.Columns)
|
||||
@@ -424,6 +455,28 @@ namespace SqlSugar
|
||||
#endregion
|
||||
|
||||
#region Helper methods
|
||||
private void RestMappingTables(MappingTableList oldTableList)
|
||||
{
|
||||
this.Context.MappingTables.Clear();
|
||||
foreach (var table in oldTableList)
|
||||
{
|
||||
this.Context.MappingTables.Add(table.EntityName, table.DbTableName);
|
||||
}
|
||||
}
|
||||
private MappingTableList CopyMappingTalbe()
|
||||
{
|
||||
MappingTableList oldTableList = new MappingTableList();
|
||||
if (this.Context.MappingTables == null)
|
||||
{
|
||||
this.Context.MappingTables = new MappingTableList();
|
||||
}
|
||||
foreach (var table in this.Context.MappingTables)
|
||||
{
|
||||
oldTableList.Add(table.EntityName, table.DbTableName);
|
||||
}
|
||||
return oldTableList;
|
||||
}
|
||||
|
||||
public virtual string GetCreateTableString(EntityInfo entityInfo)
|
||||
{
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
@@ -9,6 +9,10 @@ namespace SqlSugar
|
||||
SqlSugarProvider Context { get; set; }
|
||||
ICodeFirst BackupTable(int maxBackupDataRows = int.MaxValue);
|
||||
ICodeFirst SetStringDefaultLength(int length);
|
||||
|
||||
ICodeFirst As(Type type,string newTableName);
|
||||
ICodeFirst As<T>(string newTableName);
|
||||
|
||||
void InitTables(string entitiesNamespace);
|
||||
void InitTables(string[] entitiesNamespaces);
|
||||
void InitTables(params Type[] entityTypes);
|
||||
|
@@ -47,7 +47,7 @@ namespace SqlSugar
|
||||
ColumnDescription = item.ColumnDescription,
|
||||
Length = item.Length,
|
||||
DecimalDigits=item.DecimalDigits,
|
||||
CreateTableFieldSort=item.CreateTableFieldSort
|
||||
CreateTableFieldSort = item.CreateTableFieldSort
|
||||
};
|
||||
GetDbType(item, propertyType, result);
|
||||
if (result.DataType.Equals("varchar", StringComparison.CurrentCultureIgnoreCase) && result.Length == 0)
|
||||
|
Reference in New Issue
Block a user