public static string GetTableTemplate(this IDataProviderMetaData @this) { var result = ""; void addTable(IDataProviderMetaData medaData) { var baseType = medaData.BaseClassesInOrder.LastOrDefault(); result += " LEFT OUTER JOIN ".OnlyWhen(result.HasValue()) + $"{medaData.Schema.WithSuffix(".")}{medaData.TableName} AS [{{0}}{medaData.TableAlias}] " + $"ON [{{0}}{medaData.TableAlias}].[{medaData.IdColumnName}] = [{{0}}{baseType?.TableAlias}].[{baseType?.IdColumnName}]".OnlyWhen(baseType != null); } foreach (var parent in @this.BaseClassesInOrder) { addTable(parent); } addTable(@this); foreach (var drived in @this.DrivedClasses) { addTable(drived); } return(result); }
public static string GetTableTemplate(this IDataProviderMetaData @this, ISqlCommandGenerator sqlCommandGenerator) { var result = ""; string safe(string value) => sqlCommandGenerator.SafeId(value); void addTable(IDataProviderMetaData medaData) { var baseType = medaData.BaseClassesInOrder.LastOrDefault(); var alias = safe($"{{0}}{medaData.TableAlias}"); result += " LEFT OUTER JOIN ".OnlyWhen(result.HasValue()) + $"{medaData.Schema.WithSuffix(".")}{medaData.TableName} AS {alias} " + $"ON {alias}.{safe(medaData.IdColumnName)} = {safe($"{{0}}{baseType?.TableAlias}")}.{safe(baseType?.IdColumnName)}".OnlyWhen(baseType != null); } foreach (var parent in @this.BaseClassesInOrder) { addTable(parent); } addTable(@this); foreach (var drived in @this.DrivedClasses) { addTable(drived); } return(result); }
protected override string GetInsertCommandTemplate(IDataProviderMetaData metaData) { var autoNumber = metaData.AutoNumberProperty; return($@"INSERT INTO {{0}} ({{1}}) VALUES ({{2}}); {"SELECT CAST(LAST_INSERT_ID() as SIGNED);".OnlyWhen(autoNumber != null)}"); }
protected virtual string GetInsertCommandTemplate(IDataProviderMetaData metaData) { var autoNumber = metaData.AutoNumberProperty; return($@"INSERT INTO {{0}} ({{1}}) {$"OUTPUT [INSERTED].{autoNumber?.Name}".OnlyWhen(autoNumber != null)} VALUES ({{2}})"); }
public static IEnumerable <IPropertyData> GetPropertiesForFillData(this IDataProviderMetaData @this) { if (@this.BaseClassesInOrder.HasAny()) { return(@this.UserDefienedProperties); } return(@this.UserDefienedAndIdProperties); }
public static IEnumerable <IPropertyData> GetPropertiesForFillData(this IDataProviderMetaData @this) { if (@this.BaseClassesInOrder.HasAny()) { return(@this.UserDefienedProperties .Concat(@this.Properties.Where(p => p.IsDeleted))); } return(@this.UserDefienedAndIdAndDeletedProperties); }
public virtual string GenerateInsertCommand(IDataProviderMetaData metaData) { var properties = metaData.GetPropertiesForInsert(); return(GetInsertCommandTemplate(metaData).FormatWith( GetFullTableName(metaData), properties.Select(x => SafeId(x.Name)).ToString(", "), properties.Select(x => $"@{x.ParameterName}").ToString(", ") )); }
public static IEnumerable <IPropertyData> GetPropertiesForInsert(this IDataProviderMetaData @this) { var result = @this.UserDefienedAndIdProperties.Except(p => p.IsAutoNumber); if (@this.IsSoftDeleteEnabled) { return(result.Concat(@this.Properties.First(p => p.IsDeleted))); } return(result); }
public virtual string GenerateInsertCommand(IDataProviderMetaData metaData) { var properties = metaData.GetPropertiesForInsert(); var autoNumber = metaData.AutoNumberProperty; return($@"INSERT INTO {GetFullTablaName(metaData)} ({properties.Select(x => SafeId(x.Name)).ToString(", ")}) {$"OUTPUT [INSERTED].{autoNumber?.Name}".OnlyWhen(autoNumber != null)} VALUES ({properties.Select(x => $"@{x.ParameterName}").ToString(", ")})"); }
public virtual string GenerateUpdateCommand(IDataProviderMetaData metaData) { var properties = metaData.UserDefienedAndDeletedProperties .Except(p => p.IsAutoNumber); if (properties.None()) { return(""); } return($@"UPDATE {GetFullTableName(metaData)} SET {properties.Select(x => $"{SafeId(x.Name)} = @{x.ParameterName}").ToString(", ")} WHERE {metaData.IdColumnName} = @OriginalId"); }
DataProvider For(IDataProviderMetaData meta) => DataProviderFactory.GetOrCreate(meta.Type, Cache, Access, SqlCommandGenerator);
string GetSqlCommandColumnAlias(IDataProviderMetaData medaData, string propertyName) => $"{medaData.TableName}_{propertyName}";
string GetSqlCommandColumnAlias(IDataProviderMetaData medaData, IPropertyData property) => GetSqlCommandColumnAlias(medaData, property.Name);
string GetSqlCommandColumn(IDataProviderMetaData medaData, string propertyName) => $"{medaData.TableAlias}.[{propertyName}]";
public static IEnumerable <IPropertyData> GetPropertiesForInsert(this IDataProviderMetaData @this) { var result = @this.UserDefienedAndIdAndDeletedProperties.Except(p => p.IsAutoNumber); return(result); }
public virtual string GenerateDeleteCommand(IDataProviderMetaData metaData) => $"DELETE FROM {GetFullTableName(metaData)} WHERE {metaData.IdColumnName} = @Id";
string GetSqlCommandColumn(IDataProviderMetaData medaData, string propertyName) => $"{medaData.TableAlias}.{SqlCommandGenerator.SafeId(propertyName)}";
protected string GetFullTableName(IDataProviderMetaData metaData) => metaData.Schema.WithSuffix(".") + metaData.TableName;
public static DataProvider GetProvider( this IDataProviderMetaData @this, ICache cache, IDataAccess access, ISqlCommandGenerator sqlCommandGenerator) { return(GetProvider(@this.Type, cache, access, sqlCommandGenerator)); }