Example #1
0
        public void CreateDataclass(DatabaseInfo database, TableInfo table, EfDossier dossier, Pallet pallet)
        {
            CodeWriter cw = new CodeWriter();

            cw.WriteLine("using System;");
            cw.WriteLine("using System.CodeDom.Compiler;");
            cw.WriteLine("using System.Collections.Generic;");
            cw.WriteLine("using System.ComponentModel.DataAnnotations;");
            cw.WriteLine("using System.ComponentModel.DataAnnotations.Schema;");

            WriteUsings(cw);

            cw.Empty();

            cw.WriteLine($"namespace {dossier.Info.Namespace}.Models");
            cw.Open();

            cw.CodeCoverage();
            string isAbstract = table.Abstract ? "abstract " : "";

            if (table.ParentTableInfo != null)
            {
                cw.WriteLine($"public {isAbstract}partial class {table.Name} : {dossier.Info.Namespace}.Models.{table.ParentTableInfo.Name}");
            }
            else
            {
                cw.WriteLine($"public {isAbstract}partial class {table.Name}");
            }

            cw.Open();

            bool first = true;

            foreach (IFieldInfo fieldInfo in table.Fields)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    cw.Empty();
                }
                IEfFieldMold fieldMold = FieldMolds.Create(fieldInfo);
                if (fieldMold == null)
                {
                    dossier.AddError("Mold not found.", fieldInfo);
                }
                else
                {
                    fieldMold.CreateDataclass(fieldInfo, cw);
                }
            }
            cw.Close();

            cw.Close();

            pallet.AddProduct($"{table.Name}", "Model", $@"{table.Name}.cs", cw);
        }
Example #2
0
        private void CreateDataclassPerTable(DatabaseInfo database, EfDossier dossier, Pallet pallet)
        {
            EfTableMold tableMold = new EfTableMold();

            foreach (TableInfo table in database.Tables)
            {
                tableMold.CreateDataclass(database, table, dossier, pallet);
            }
        }
Example #3
0
        public void Manufacture(EfDossier dossier)
        {
            foreach (DatabaseInfo database in dossier.Info.Databases)
            {
                Pallet pallet = new Pallet();

                // create databasecontext
                CreateDatabaseContext(database, dossier, pallet);

                // create dataclass per table
                CreateDataclassPerTable(database, dossier, pallet);

                dossier.Pallets.Add(pallet);
            }
        }
Example #4
0
        private void CreateDatabaseContext(DatabaseInfo database, EfDossier dossier, Pallet pallet)
        {
            CodeWriter cw = new CodeWriter();

            cw.WriteLine($"using {dossier.Info.Namespace}.Models;");
            cw.WriteLine("using System.CodeDom.Compiler;");
            cw.WriteLine("using Microsoft.EntityFrameworkCore;");
            //cw.WriteLine("using System.Data.Entity.ModelConfiguration.Conventions;");

            cw.Empty();

            cw.WriteLine($"namespace {dossier.Info.Namespace}.Dal");
            cw.Open();

            cw.CodeCoverage();
            cw.WriteLine($"public partial class {database.Name}Context : DbContext");

            cw.Open();

            foreach (TableInfo table in database.Tables)
            {
                cw.WriteLine($"public DbSet<{table.Name}> {table.Plural}{{ get; set; }}");
            }

            //cw.WriteLine($"protected override void OnModelCreating(DbModelBuilder modelBuilder)");
            //cw.Open();

            //cw.WriteLine($"modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();");

            //cw.Close();

            cw.Close();

            cw.Close();

            pallet.AddProduct("DbContext", "DAL", $@"{database.Name}Context.cs", cw);
        }