public void ScaffoldingOrderClass() { // Arrange var definition = new CSharpClassDefinition { Namespaces = { "System", "System.ComponentModel.DataAnnotations", "System.ComponentModel.DataAnnotations.Schema" }, Namespace = "DesignPatterns", AccessModifier = AccessModifier.Public, Name = "Order" }; definition.Attributes.Add(new MetadataAttribute("Table", "\"Orders\"") { Sets = { new MetadataAttributeSet("Schema", "\"dbo\"") } }); definition.Properties.Add( CSharpClassDefinition.CreateAutomaticProperty("Int32?", "OrderID", attributes: new[] { new MetadataAttribute("Key"), new MetadataAttribute("DatabaseGenerated", "DatabaseGeneratedOption.Identity") }) ); definition.Properties.Add( CSharpClassDefinition.CreateAutomaticProperty("DateTime?", "OrderDate", attributes: new[] { new MetadataAttribute("Column") }) ); definition.Properties.Add( CSharpClassDefinition.CreateAutomaticProperty("String", "CustomerID", attributes: new[] { new MetadataAttribute("Column"), new MetadataAttribute("StringLength", "5") }) ); definition.Properties.Add( CSharpClassDefinition.CreateAutomaticProperty("Int32?", "ShipperID", attributes: new[] { new MetadataAttribute("Column") }) ); definition.SimplifyDataTypes(); // Act CSharpCodeBuilder.CreateFiles(@"C:\Temp\CatFactory.NetCore\DesignPatterns", string.Empty, true, definition); }
public void ScaffoldingDbContextClass() { // Arrange var definition = new CSharpClassDefinition { Namespaces = { "System", "Microsoft.EntityFrameworkCore" }, Documentation = new Documentation("Represents Northwind database in EF Core Model"), Namespace = "DesignPatterns", AccessModifier = AccessModifier.Public, IsPartial = true, Name = "NorthwindDbContext", BaseClass = "DbContext", Constructors = { new ClassConstructorDefinition { AccessModifier = AccessModifier.Public, Invocation = "base(options)", Documentation = new Documentation("Initializes a new instance of NorthwindDbContext class"), Parameters = { new ParameterDefinition("DbContextOptions<NorthwindDbContext>", "options") { Documentation = new Documentation("Instance of DbContext options") } } } }, Properties = { CSharpClassDefinition.CreateAutomaticProperty("DbSet<Product>", "Products"), CSharpClassDefinition.CreateAutomaticProperty("DbSet<Shipper>", "Shippers"), CSharpClassDefinition.CreateAutomaticProperty("DbSet<Order>", "Orders") }, Methods = { new MethodDefinition(AccessModifier.Protected, "", "OnModelCreating", new ParameterDefinition("ModelBuilder", "modelBuilder")) { IsOverride = true, Lines = { new CodeLine("modelBuilder.Entity<Product>(builder =>"), new CodeLine("{"), new CommentLine(1, " Add configuration for 'dbo.Products' table"), new CodeLine(), new CodeLine(1, "builder.ToTable(\"Products\", \"dbo\");"), new CodeLine(), new CodeLine(1, "builder.Property(p => p.ProductID).UseSqlServerIdentityColumn();"), new CodeLine(), new CodeLine(1, "builder.HasKey(p => p.ProductID);"), new CodeLine("});"), new CodeLine(), new CommentLine(" Register results for stored procedures"), new CodeLine(), new CommentLine(" 'dbo.CustOrderHist'"), new CodeLine("modelBuilder.Query<CustOrderHist>();") } } } }; // Act CSharpCodeBuilder.CreateFiles(@"C:\Temp\CatFactory.NetCore\DesignPatterns", string.Empty, true, definition); }