public virtual void CreateModelTypes(string tableName) { _types.Clear(); _typeBuilders.Clear(); ExistingAssemblies.Clear(); int requestHash = _schema.GetHashCode(); //Verify if all Types exists bool allTypesExist = true; PopulateExistingAssemblies(_schema.Tables, tableName, requestHash, ref allTypesExist); PopulateExistingAssemblies(_schema.Views, tableName, requestHash, ref allTypesExist); if (!allTypesExist) { ExistingAssemblies.Clear(); //Create Normal Poco Type to be used as a reference CreateTypes(_schema.Tables, tableName, requestHash); CreateTypes(_schema.Views, tableName, requestHash); //Navigation properties CreateNavigationProperties(_schema.Tables); //Creates DbSet Propeties for the Context CreateDBSetProperty(_schema.Tables, tableName, requestHash); CreateDBSetProperty(_schema.Views, tableName, requestHash); } }
public virtual void SetupDataContext(string tableName) { var table = _dbSchema.Tables.Find(x => x.VariableName == tableName) ?? _dbSchema.Views.Find(x => x.VariableName == tableName); _dynamicClassBuilder.CreateModelTypes(tableName); var dbContextOptions = _dbSchemaBuilder.CreateDbContextOptions(); Instance = (DbContextBase)Activator.CreateInstance(typeof(DbContextBase), System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance, null, new object[] { dbContextOptions, _dynamicClassBuilder.ExistingAssemblies, _dbSchema.Tables }, null); //Entity DbSet var assemblyName = Utils.AssemblyName(table, tableName, _dbSchema.GetHashCode()); DbSetEntityType = _dynamicClassBuilder.ExistingAssemblies.Where(x => x.Key.StartsWith(assemblyName, StringComparison.InvariantCultureIgnoreCase)).Single().Value; }