Hi,
This is what exactly I want to achieve
https://lennilobel.wordpress.com/category/c/
But in .Net Core 2.1; Database created using
PM> Scaffold-DbContext "Server=xxxxx;Database=StarWars;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context "SWContext" -DataAnnotations
SWContext.cs
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
namespace CoreProject.Models
{
public partial class SWContext : DbContext
{
public SWContext()
{
}
public SWContext(DbContextOptions<SWContext> options)
: base(options)
{
}
public virtual DbSet<Character> Character { get; set; }
public virtual DbSet<Climate> Climate { get; set; }
public virtual DbSet<EyeColor> EyeColor { get; set; }
public virtual DbSet<Gender> Gender { get; set; }
public virtual DbSet<HairColor> HairColor { get; set; }
public virtual DbSet<Planet> Planet { get; set; }
public virtual DbSet<SkinColor> SkinColor { get; set; }
public virtual DbSet<Terrain> Terrain { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
optionsBuilder.UseSqlServer("Server=xxxx;Database=StarWars;Trusted_Connection=True;");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Character>(entity =>
{
entity.HasIndex(e => new { e.Id, e.ClimateId })
.HasName("idx_Climate");
entity.HasIndex(e => new { e.Id, e.EyeColorId })
.HasName("idx_EyeColor");
entity.HasIndex(e => new { e.Id, e.GenderId })
.HasName("idx_Gender");
entity.HasIndex(e => new { e.Id, e.HairColorId })
.HasName("idx_HairColor");
entity.HasIndex(e => new { e.Id, e.SkinColorId })
.HasName("idx_SkinColor");
entity.HasIndex(e => new { e.Id, e.TerrainId })
.HasName("idx_Terrain");
entity.HasIndex(e => new { e.Id, e.GenderId, e.SkinColorId, e.HairColorId, e.EyeColorId, e.ClimateId, e.TerrainId })
.HasName("idx_Character");
entity.HasOne(d => d.Climate)
.WithMany(p => p.Character)
.HasForeignKey(d => d.ClimateId)
.HasConstraintName("FK_Character_Climate");
entity.HasOne(d => d.EyeColor)
.WithMany(p => p.Character)
.HasForeignKey(d => d.EyeColorId)
.HasConstraintName("FK_Character_EyeColor");
entity.HasOne(d => d.Gender)
.WithMany(p => p.Character)
.HasForeignKey(d => d.GenderId)
.HasConstraintName("FK_Character_Gender");
entity.HasOne(d => d.HairColor)
.WithMany(p => p.Character)
.HasForeignKey(d => d.HairColorId)
.HasConstraintName("FK_Character_HairColor");
entity.HasOne(d => d.SkinColor)
.WithMany(p => p.Character)
.HasForeignKey(d => d.SkinColorId)
.HasConstraintName("FK_Character_SkinColor");
entity.HasOne(d => d.Terrain)
.WithMany(p => p.Character)
.HasForeignKey(d => d.TerrainId)
.HasConstraintName("FK_Character_Terrain");
});
modelBuilder.Entity<Planet>(entity =>
{
entity.HasOne(d => d.HomeWorld)
.WithMany(p => p.Planet)
.HasForeignKey(d => d.HomeWorldId)
.HasConstraintName("FK_Planet_Character");
});
}
}
}
My ClassGender.tt
<#@include file="EnumsDb.ttinclude" #>
<#
var configFilePath = "app.config";
var enums = new []
{
new EnumEntry
("Genders", "DemoDatabase", "dbo", "Gender", "Id", "Name")
{ GenerateUndefinedMember = true },
new EnumEntry
("System error types", "DemoDatabase", "dbo", "EyeColor", "Id", "Name")
{ GenerateUndefinedMember = true },
};
var code = this.GenerateEnums(configFilePath, enums);
return code;
#>
app.config
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
https://go.microsoft.com/fwlink/?LinkId=301880
-->
<configuration>
<connectionStrings>
<add name="DemoDatabase" connectionString="Data Source=xxxx;Initial Catalog=StarWars;Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
But, seem not working.
Then, I try to look into this but stuck:-
https://stackoverflow.com/questions/37679367/entity-framework-core-customise-scaffolding
Please advise.
Thank you.
Regards,
Micheale