mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 18:22:23 +08:00
Add Queryable.ToClassString
This commit is contained in:
@@ -206,7 +206,45 @@ namespace SqlSugar
|
|||||||
classText = classText.Replace(DbFirstTemplate.KeyPropertyName, null);
|
classText = classText.Replace(DbFirstTemplate.KeyPropertyName, null);
|
||||||
return classText;
|
return classText;
|
||||||
}
|
}
|
||||||
|
internal string GetClassString(List<DbColumnInfo> columns, ref string className)
|
||||||
|
{
|
||||||
|
string classText = this.ClassTemplate;
|
||||||
|
string ConstructorText = IsDefaultValue ? this.ConstructorTemplate : null;
|
||||||
|
classText = classText.Replace(DbFirstTemplate.KeyClassName, className);
|
||||||
|
classText = classText.Replace(DbFirstTemplate.KeyNamespace, this.Namespace);
|
||||||
|
classText = classText.Replace(DbFirstTemplate.KeyUsing, IsAttribute ? (this.UsingTemplate + "using " + UtilConstants.AssemblyName + ";\r\n") : this.UsingTemplate);
|
||||||
|
classText = classText.Replace(DbFirstTemplate.KeyClassDescription, this.ClassDescriptionTemplate.Replace(DbFirstTemplate.KeyClassDescription,"\r\n"));
|
||||||
|
classText = classText.Replace(DbFirstTemplate.KeySugarTable, IsAttribute ? string.Format(DbFirstTemplate.ValueSugarTable, className) : null);
|
||||||
|
if (columns.IsValuable())
|
||||||
|
{
|
||||||
|
foreach (var item in columns)
|
||||||
|
{
|
||||||
|
var isLast = columns.Last() == item;
|
||||||
|
var index = columns.IndexOf(item);
|
||||||
|
string PropertyText = this.PropertyTemplate;
|
||||||
|
string PropertyDescriptionText = this.PropertyDescriptionTemplate;
|
||||||
|
string propertyName = GetPropertyName(item);
|
||||||
|
string propertyTypeName =item.DataType;
|
||||||
|
PropertyText = GetPropertyText(item, PropertyText);
|
||||||
|
PropertyDescriptionText = GetPropertyDescriptionText(item, PropertyDescriptionText);
|
||||||
|
PropertyText = PropertyDescriptionText + PropertyText;
|
||||||
|
classText = classText.Replace(DbFirstTemplate.KeyPropertyName, PropertyText + (isLast ? "" : ("\r\n" + DbFirstTemplate.KeyPropertyName)));
|
||||||
|
if (ConstructorText.IsValuable() && item.DefaultValue != null)
|
||||||
|
{
|
||||||
|
var hasDefaultValue = columns.Skip(index + 1).Any(it => it.DefaultValue.IsValuable());
|
||||||
|
ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyPropertyName, propertyName);
|
||||||
|
ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyDefaultValue, GetPropertyTypeConvert(item)) + (!hasDefaultValue ? "" : this.ConstructorTemplate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!columns.Any(it => it.DefaultValue != null))
|
||||||
|
{
|
||||||
|
ConstructorText = null;
|
||||||
|
}
|
||||||
|
classText = classText.Replace(DbFirstTemplate.KeyConstructor, ConstructorText);
|
||||||
|
classText = classText.Replace(DbFirstTemplate.KeyPropertyName, null);
|
||||||
|
return classText;
|
||||||
|
}
|
||||||
public void CreateClassFile(string directoryPath, string nameSpace = "Models")
|
public void CreateClassFile(string directoryPath, string nameSpace = "Models")
|
||||||
{
|
{
|
||||||
Check.ArgumentNullException(directoryPath, "directoryPath can't null");
|
Check.ArgumentNullException(directoryPath, "directoryPath can't null");
|
||||||
|
@@ -605,6 +605,21 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public string ToClassString(string className)
|
||||||
|
{
|
||||||
|
List<DbColumnInfo> columns = new List<DbColumnInfo>();
|
||||||
|
var properties = typeof(T).GetProperties();
|
||||||
|
foreach (var item in properties)
|
||||||
|
{
|
||||||
|
columns.Add(new DbColumnInfo()
|
||||||
|
{
|
||||||
|
DbColumnName=item.Name,
|
||||||
|
DataType=UtilMethods.GetUnderType(item.PropertyType).Name
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var result = ((this.Context.DbFirst) as DbFirstProvider).GetClassString(columns, ref className);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
#region Async methods
|
#region Async methods
|
||||||
public Task<T> SingleAsync()
|
public Task<T> SingleAsync()
|
||||||
{
|
{
|
||||||
@@ -1009,7 +1024,7 @@ namespace SqlSugar
|
|||||||
if (IsCache)
|
if (IsCache)
|
||||||
{
|
{
|
||||||
var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCache;
|
var cacheService = this.Context.CurrentConnectionConfig.ConfigureExternalServices.DataInfoCache;
|
||||||
result = CacheSchemeMain.GetOrCreate<List<TResult>>(cacheService, this.QueryBuilder,()=> { return GetData<TResult>(sqlObj); },CacheTime, this.Context);
|
result = CacheSchemeMain.GetOrCreate<List<TResult>>(cacheService, this.QueryBuilder, () => { return GetData<TResult>(sqlObj); }, CacheTime, this.Context);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -123,6 +123,7 @@ namespace SqlSugar
|
|||||||
Task<KeyValuePair<List<T>,int>> ToPageListAsync(int pageIndex, int pageSize, int totalNumber);
|
Task<KeyValuePair<List<T>,int>> ToPageListAsync(int pageIndex, int pageSize, int totalNumber);
|
||||||
ISugarQueryable<T> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
ISugarQueryable<T> WithCache(int cacheDurationInSeconds = int.MaxValue);
|
||||||
ISugarQueryable<T> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
ISugarQueryable<T> WithCacheIF(bool isCache, int cacheDurationInSeconds = int.MaxValue);
|
||||||
|
string ToClassString();
|
||||||
void Clear();
|
void Clear();
|
||||||
}
|
}
|
||||||
public partial interface ISugarQueryable<T, T2> : ISugarQueryable<T>
|
public partial interface ISugarQueryable<T, T2> : ISugarQueryable<T>
|
||||||
|
Reference in New Issue
Block a user