Ejemplo n.º 1
0
        //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();
 }
Ejemplo n.º 3
0
 public TableContext(Table table, string alias)
 {
     _table = table;
     _alias = alias;
 }
Ejemplo n.º 4
0
 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());
 }
Ejemplo n.º 5
0
 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));
 }
Ejemplo n.º 6
0
 public InsertSqlBuilder(Table mainTable)
 {
     if (mainTable == null)
         throw new ArgumentNullException("mainTable");
     _insertClause = string.Format("INSERT INTO {0}", Escape(mainTable.Name));
 }