【问题标题】:Entity Framework (Code First) - Dynamically Building a Model实体框架(代码优先) - 动态构建模型
【发布时间】:2013-07-26 10:37:42
【问题描述】:

我有一个包含我的域的类的程序集 - “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[] { });
       }

   }
}

接下来,我创建数据库

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”。如何使用继承?我该怎么做?

【问题讨论】:

  • 我知道这个帖子很老了!但是你遇到这个问题了吗? 自动更新数据库?

标签: c# entity-framework dynamic model code-first


【解决方案1】:

尝试使用[Table("Person")] 属性,我鼓励你看看Inheritance with EF Code First,这是一个好帖子。

所以要恢复试试这个:

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;}
} 

【讨论】:

    猜你喜欢
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2016-06-03
    • 1970-01-01
    相关资源
    最近更新 更多