Example #1
0
        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);
            }
        }
Example #2
0
        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;
        }