public static ObjectDataProvider <TConnection, TDataParameter> GetProvider <TConnection, TDataParameter>(
     this DataProviderMetaData @this, ICache cache, SqlCommandGenerator sqlCommandGenerator)
     where TConnection : DbConnection, new()
     where TDataParameter : IDbDataParameter, new()
 {
     return(ObjectDataProviderFactory <TConnection, TDataParameter> .Get(@this.Type, cache, sqlCommandGenerator));
 }
Example #2
0
        void PrepareTableTemplate()
        {
            TablesTemplate = "";
            DataProviderMetaData temp = null;

            void addTable(DataProviderMetaData medaData)
            {
                TablesTemplate += " LEFT OUTER JOIN ".OnlyWhen(temp != null) +
                                  $"{medaData.Schema.WithSuffix(".")}{medaData.TableName} AS {{0}}{medaData.TableAlias} " +
                                  $"ON {{0}}{medaData.TableAlias}.{medaData.IdColumnName} = {{0}}{temp?.TableAlias}.{temp?.IdColumnName}".OnlyWhen(temp != null);

                temp = medaData;
            }

            foreach (var parent in MetaData.BaseClassesInOrder)
            {
                addTable(parent);
            }

            addTable(MetaData);

            foreach (var drived in MetaData.DrivedClasses)
            {
                addTable(drived);
            }
        }
Example #3
0
        public virtual string GenerateUpdateCommand(DataProviderMetaData metaData)
        {
            var properties = metaData.UserDefienedProperties
                             .Except(p => p.IsAutoNumber);

            return($@"UPDATE {GetFullTablaName(metaData)} SET
                {properties.Select(x => $"{SafeId(x.Name)} = @{x.ParameterName}").ToString(", ")}
                OUTPUT INSERTED.{metaData.IdColumnName}
                WHERE {metaData.IdColumnName} = @OriginalId");
        }
Example #4
0
        public virtual string GenerateInsertCommand(DataProviderMetaData metaData)
        {
            var properties = metaData.UserDefienedAndIdProperties
                             .Except(p => p.IsAutoNumber);

            if (metaData.IsSoftDeleteEnabled)
            {
                properties = properties.Concat(metaData.Properties.First(p => p.IsDeleted));
            }

            var autoNumber = metaData.Properties.FirstOrDefault(x => x.IsAutoNumber);

            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(", ")})");
        }
Example #5
0
 string GetFullTablaName(DataProviderMetaData metaData) =>
 metaData.Schema.WithSuffix(".") + metaData.TableName;
Example #6
0
 public virtual string GenerateDeleteCommand(DataProviderMetaData metaData) =>
 $"DELETE FROM {GetFullTablaName(metaData)} WHERE {metaData.IdColumnName} = @Id";
Example #7
0
 string GetSqlCommandColumnAlias(DataProviderMetaData medaData, string propertyName) =>
 $"{medaData.TableName}_{propertyName}";
Example #8
0
 string GetSqlCommandColumnAlias(DataProviderMetaData medaData, PropertyData property) =>
 GetSqlCommandColumnAlias(medaData, property.Name);
Example #9
0
 string GetSqlCommandColumn(DataProviderMetaData medaData, string propertyName) =>
 $"{medaData.TableAlias}.[{propertyName}]";