public void CanDetectTypeTableForSampleModel() { var typeMap = TypeTableMaps.Get <Models.SampleEntity>(); Assert.Equal("SampleEntities", typeMap.TableName); Assert.Contains(typeMap.Columns, m => m.Name == nameof(SampleEntity.Id) && m.Type == typeof(int) && m.DbType == SqlDbType.Int); Assert.Contains(typeMap.Columns, m => m.Name == nameof(SampleEntity.Name) && m.Type == typeof(string) && m.DbType == SqlDbType.NVarChar); Assert.Contains(typeMap.Columns, m => m.Name == nameof(SampleEntity.Description)); }
private string GetQueryColumns <TType>(QueryColumnMode mode, TType model = default(TType)) { var map = TypeTableMaps.Get <TType>(); var cols = new StringBuilder(); if (mode == QueryColumnMode.InsertColumns || mode == QueryColumnMode.InsertValues) { cols.Append("("); } foreach (var column in map.Columns) { if (column.IsKey || column.IsDbGenerated) { continue; } switch (mode) { case QueryColumnMode.InsertColumns: cols.Append("["); cols.Append(column.Name); cols.Append("], "); break; case QueryColumnMode.InsertValues: cols.Append("@"); cols.Append(column.Name); cols.Append(", "); break; case QueryColumnMode.UpdateSets: cols.Append("["); cols.Append(column.Name); cols.Append("] = "); cols.Append("@"); cols.Append(column.Name); cols.Append(", "); break; } } cols.Remove(cols.Length - 2, 2); if (mode == QueryColumnMode.InsertColumns || mode == QueryColumnMode.InsertValues) { cols.Append(")"); } return(cols.ToString()); }
private DynamicParameters GetQueryParametersForModel <TType>(TType model) { var colParams = new DynamicParameters(); var map = TypeTableMaps.Get <TType>(); foreach (var column in map.Columns) { if (column.IsKey || column.IsDbGenerated) { continue; } colParams.Add(column.Name, column.Get(model)); } return(colParams); }
public void Initialise(string tableName) { BulkCopy.DestinationTableName = tableName; // Dynamically construct a datatable and force name-based column mapping InternalTable = new DataTable(); var tableMap = TypeTableMaps.Get <TModel>(); foreach (var property in tableMap.Columns) { InternalTable.Columns.Add(property.Name, property.Type); } // Remap all of the columns by name foreach (DataColumn column in InternalTable.Columns) { BulkCopy.ColumnMappings.Add(column.ColumnName, column.ColumnName); } }
public Repository(IDbConnection db) { this.db = db; typeMap = TypeTableMaps.Get <TModel>(); }