entity framework(代码优先) – 动态构建模型

我有一个类我的域的组件 – “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’不是create.It创建一个表’Entities’,其中包含字段Id,FirstName,LastName。

如果我改变了人

 public class Person { public int Id {get; set;} public string FirstName {get ;set;} public string LastName {get ;set;} } 

然后在数据库中创建了两个表 – “人物”和“实体”。 我如何使用inheritance? 我该怎么做?

尝试使用[Table("Person")]属性,我建议您先看一下使用EF Code First的inheritance ,这是一个很好的post。

所以要恢复试试这个:

 public abstract class Entity { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } } [Table("Person")] public class Person : Entity { public string FirstName {get ;set;} public string LastName {get ;set;} }