Browse Source

Update .net core project

SqlSugar5
sunkaixuan 2 years ago
parent
commit
064afa409a
  1. 85
      Src/Asp.NetCore2/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs
  2. 4
      Src/Asp.NetCore2/SqlSugar/Interface/ICodeFirst.cs
  3. 2
      Src/Asp.NetCore2/SqlSugar/Realization/MySql/CodeFirst/MySqlCodeFirst.cs

85
Src/Asp.NetCore2/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs

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

4
Src/Asp.NetCore2/SqlSugar/Interface/ICodeFirst.cs

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

2
Src/Asp.NetCore2/SqlSugar/Realization/MySql/CodeFirst/MySqlCodeFirst.cs

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

Loading…
Cancel
Save