ドメインのクラス「Domains.dll」を含むアセンブリがあります。アセンブリの DbContext Dbset ロード クラスに動的に追加します。
public class MyContext : DbContext
{
public MyContext() : base("DBConnection"){}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Assembly assembly = Assembly.LoadFrom("Domains.dll");
var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
var list = assembly.GetTypes().OrderBy(i => i.GetType().Name);
foreach (Type item in list)
{
entityMethod.MakeGenericMethod(item)
.Invoke(modelBuilder, new object[] { });
}
}
}
次に、DataBase を作成します
context.Database.Create();
これは機能しますが、私のドメインには問題があります。親エンティティのクラスがあります
public abstract class Entity
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
}
public class Person : Entity
{
public string FirstName {get ;set;}
public string LastName {get ;set;}
}
今データベースを実行すると、テーブル 'Person' は作成されません。フィールド Id、FirstName、LastName を持つテーブル 'Entities' が作成されます。
人を変えたら
public class Person
{
public int Id {get; set;}
public string FirstName {get ;set;}
public string LastName {get ;set;}
}
次に、データベースに「Person」と「Entities」の 2 つのテーブルを作成しました。継承を使用するにはどうすればよいですか? どうすれば正しくできますか?