示例#1
0
        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);
        }
示例#3
0
        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);
        }
示例#6
0
 public abstract List <object> Query(
     string sqlQueryString,
     OrmAssemblySqlWindows ormCollectibleAssembly,
     string typeName,
     string propertyNameFilter,
     out OrmTypeWindows ormCollecibleType);