public void CreateOrmAssembly( bool saveOrmAssembly, string ormAssemblyOutputDirectory) { string assemblyFileName = string.Format("{0}.dll", this.Name); _ormAssembly = new OrmAssemblyWindows( this.Name, assemblyFileName, AssemblyBuilderAccess.RunAndSave); foreach (DatabaseTableWindows table in _tables) { OrmTypeWindows ormType = _ormAssembly.CreateOrmType(table.TableName, true); PublishFeedback(string.Format("Created type {0}.", ormType.TypeName)); foreach (DatabaseTableColumnWindows column in table.Columns) { ormType.CreateOrmProperty( column.ColumnName, SqlTypeConverterWindows.Instance.GetDotNetType(column.DataType, column.IsNullable)); } table.MappedType = ormType.CreateType(); } if (!saveOrmAssembly) { return; } _ormAssembly.Save(ormAssemblyOutputDirectory); }
public OrmTypeWindows CreateOrmTypeFromSqlDataReader( string typeName, DbDataReader reader, bool prefixWithAssemblyNamespace) { DataTable schemaTable = reader.GetSchemaTable(); OrmTypeWindows result = CreateOrmType(typeName, prefixWithAssemblyNamespace); foreach (DataRow r in schemaTable.Rows) { string columnName = r[COLUMN_NAME_SCHEMA_ATTRIBUTE].ToString(); short ordinalPosition = Convert.ToInt16(r[ORDINAL_POSITION_SCHEMA_ATTRIBUTE]); bool isNullable = bool.Parse(r[IS_NULLABLE_SCHEMA_ATTRIBUTE].ToString()); string dataTypeName = r[DATA_TYPE_NAME_SCHEMA_ATTRIBUTE].ToString(); result.CreateOrmProperty( columnName, SqlTypeConverterWindows.Instance.GetDotNetType(dataTypeName, isNullable)); } result.CreateType(); return(result); }
public OrmTypeWindows CreateOrmType(string typeName, bool prefixWithAssemblyNamespace) { if (_ormTypes.Exists(typeName)) { throw new ArgumentException(string.Format( "{0} with {1} {2} already created on {3}.", typeof(OrmTypeWindows).FullName, EntityReaderGeneric <OrmTypeWindows> .GetPropertyName(p => p.TypeName, false), typeName, this.GetType().FullName)); } if (prefixWithAssemblyNamespace) { typeName = string.Format("{0}.{1}", _assemblyName, typeName); } TypeBuilder typeBuilder = _moduleBuilder.DefineType(typeName, TypeAttributes.Class | TypeAttributes.Public); ConstructorBuilder constructorBuilder = typeBuilder.DefineDefaultConstructor(MethodAttributes.Public); OrmTypeWindows result = new OrmTypeWindows(typeName, typeBuilder); _ormTypes.Add(result.TypeName, result); return(result); }
public override List <object> Query( string sqlQueryString, OrmAssemblySqlWindows ormCollectibleAssembly, string typeName, string propertyNameFilter, out OrmTypeWindows ormCollecibleType) { if (ormCollectibleAssembly == null) { throw new NullReferenceException(string.Format("ormCollectibleAssembly may not be null.")); } if (ormCollectibleAssembly.AssemblyBuilderAccess != AssemblyBuilderAccess.RunAndCollect) { throw new ArgumentException(string.Format( "Querying the database with a raw SQL query string requires an {0} with the {1} property set to {2}.", typeof(OrmAssemblyWindows).FullName, EntityReaderGeneric <OrmAssemblyWindows> .GetPropertyName(p => p.AssemblyBuilderAccess, false), AssemblyBuilderAccess.RunAndCollect)); } List <object> result = null; using (SQLiteConnection connection = new SQLiteConnection(_connectionString)) { connection.Open(); using (SQLiteCommand command = new SQLiteCommand(sqlQueryString, connection)) { command.CommandType = System.Data.CommandType.Text; using (SQLiteDataReader reader = command.ExecuteReader()) { ormCollecibleType = ormCollectibleAssembly.CreateOrmTypeFromSqlDataReader(typeName, reader, true); result = DataHelperWindows.ParseReaderToEntities(reader, ormCollecibleType.DotNetType, propertyNameFilter); } } } return(result); }
public static Type GenerateType( string assemblyName, string typeName, DataTable schemaTable, bool prefixWithAssemblyNamespace) { OrmAssemblyWindows assembly = new OrmAssemblyWindows(assemblyName, AssemblyBuilderAccess.Run); OrmTypeWindows type = assembly.CreateOrmType(typeName, prefixWithAssemblyNamespace); foreach (DataRow row in schemaTable.Rows) { string columnName = row[COLUMN_NAME_SCHEMA_ATTRIBUTE].ToString(); short ordinalPosition = Convert.ToInt16(row[ORDINAL_POSITION_SCHEMA_ATTRIBUTE]); bool isNullable = bool.Parse(row[IS_NULLABLE_SCHEMA_ATTRIBUTE].ToString()); string dataTypeName = row[DATA_TYPE_NAME_SCHEMA_ATTRIBUTE].ToString(); type.CreateOrmProperty( columnName, SqlTypeConverterWindows.Instance.GetDotNetType(dataTypeName, isNullable), System.Reflection.PropertyAttributes.HasDefault); } Type result = type.CreateType(); return(result); }
public abstract List <object> Query( string sqlQueryString, OrmAssemblySqlWindows ormCollectibleAssembly, string typeName, string propertyNameFilter, out OrmTypeWindows ormCollecibleType);