//todo: temporary public public FillingDelegate GetFiller(TypeMappingInfo mapping, Table table) { var ct = typeof(object); // Fill(reader, obj, offset) Type[] methodArgs2 = { typeof(IDataRecord), ct, typeof(int) }; var method = new DynamicMethod( "ct", null, methodArgs2, typeof(SqlValueMapper)); var generator = method.GetILGenerator(); Type type = mapping.Type; var i = 0; foreach(var prop in table.Columns) { var navigation = prop as NavigationPropertyMapping; if (navigation != null) { GenerateForNavigationProperty(navigation, type, generator, i); } else { GenerateForPrimitive(type, prop, generator, i); } i++; } // return generator.Emit(OpCodes.Ret); return (FillingDelegate)method.CreateDelegate(typeof(FillingDelegate)); }
private static string CreateTable(Table table) { var stringBuilder = new StringBuilder("CREATE TABLE "); stringBuilder.AppendFormat("[{0}]", table.Name); stringBuilder.Append(" ("); var columns = new List<string>(table.Columns.Count + 2); var entityTabe = table as EntityTable; if (entityTabe != null) { columns.Add(string.Format("[{0}] {1} PRIMARY KEY", entityTabe.IdentityColumn.ColumnName, entityTabe.IdentityColumn.SqlType.ToString().ToUpper())); if (entityTabe.HasDiscriminator) { columns.Add(string.Format("[{0}] INT NOT NULL", entityTabe.DiscriminatorColumn.ColumnName)); } } columns.AddRange(table.Columns.Select(column => string.Format("[{0}] {1}", column.ColumnName, column.SqlType.ToString().ToUpper()))); stringBuilder.Append(string.Join(", ", columns)); stringBuilder.Append(");"); return stringBuilder.ToString(); }
public TableContext(Table table, string alias) { _table = table; _alias = alias; }
private string PredicateForPrimitiveList(SelectSqlBuilder builder, Table tbl, TableContext context) { var listContext = GetTableContext(tbl, "T"); builder.InnerJoin(context, listContext, ((EntityTable) context.Table).IdentityColumn.ColumnName, tbl.Columns[0].ColumnName); return builder.GetEquality(listContext, tbl.Columns[1].ColumnName, builder.GetNextParameter()); }
private TableContext GetTableContext(Table table, string context) { AliasContext aliasContext; if (!_contextAliases.TryGetValue(context, out aliasContext)) { aliasContext = new AliasContext(context); _contextAliases.Add(context, aliasContext); } return new TableContext(table, aliasContext.GetTableAlias(table.Name)); }
public InsertSqlBuilder(Table mainTable) { if (mainTable == null) throw new ArgumentNullException("mainTable"); _insertClause = string.Format("INSERT INTO {0}", Escape(mainTable.Name)); }