コード例 #1
0
        internal DbContextGenerator(string folder = "")
        {
            this.EntityCodeList = new List <string>();
            this.directory      = string.IsNullOrEmpty(folder) ? Environment.CurrentDirectory : Path.Combine(Environment.CurrentDirectory, folder);

            IServiceCollection services = new ServiceCollection()
                                          .AddEntityFrameworkSqlServer()
                                          .AddEntityFrameworkDesignTimeServices()
                                          .AddSingleton <ICSharpDbContextGenerator, MyDbContextGenerator>()
                                          .AddSingleton <ICSharpEntityTypeGenerator, MyEntityTypeGenerator>()
                                          .AddSingleton <IScaffoldingModelFactory, MyScaffoldingModelFactory>();

            new SqlServerDesignTimeServices().ConfigureDesignTimeServices(services);
            var logger = services.GetService <IDiagnosticsLogger <DbLoggerCategory.Scaffolding> >();
            var databaseModelFactory = new SqlServerDatabaseModelFactory(logger);
            MyDbContextGenerator  dbContextGenerator  = (MyDbContextGenerator)services.GetService <ICSharpDbContextGenerator>();
            MyEntityTypeGenerator entityTypeGenerator = (MyEntityTypeGenerator)services.GetService <ICSharpEntityTypeGenerator>();
            var   scaffoldingModelFactory             = (MyScaffoldingModelFactory)services.GetService <IScaffoldingModelFactory>();
            var   databaseModel = databaseModelFactory.Create(AppSettings.Connection, new List <string>(), new List <string>());
            Model model         = (Model)scaffoldingModelFactory.Create(databaseModel, false);

            this.DbContextCode = dbContextGenerator.WriteCode(model, $"{nameof(Quartz)}.{folder}", $"{nameof(Quartz)}Context", AppSettings.Connection, false, false);

            Helper.FormattingXml(model, databaseModel);
            foreach (var entityType in model.GetEntityTypes())
            {
                var entityCode = entityTypeGenerator.WriteCode(entityType, $"{nameof(Quartz)}.{folder}", false);
                this.EntityCodeList.Add(entityCode);
            }

            this.WriteCode(scaffoldingModelFactory.Data, $"{nameof(Quartz)}.{folder}");
        }
コード例 #2
0
        private static DatabaseModel GetDatabaseModel()
        {
            var logger = Services.GetService <IDiagnosticsLogger <DbLoggerCategory.Scaffolding> >();
            var databaseModelFactory = new SqlServerDatabaseModelFactory(logger);

            using var connection = new SqlConnection(Connection.ConnectionString);
            return(databaseModelFactory.Create(connection, new DatabaseModelFactoryOptions(new List <string>(), new List <string>())));
        }
コード例 #3
0
        public DatabaseModel CreateModel(string createSql, TableSelectionSet selection = null)
        {
            _testStore.ExecuteNonQuery(createSql);

            var reader = new SqlServerDatabaseModelFactory();

            return(reader.Create(_testStore.Connection.ConnectionString, selection ?? TableSelectionSet.All));
        }