【问题标题】:Entity Framework Database First inherits models from base classEntity Framework Database First 从基类继承模型
【发布时间】:2013-06-18 14:23:56
【问题描述】:

我首先使用实体​​框架数据库来处理 db。

我有一个基类 EntityBase

public class EntityBase
{        
    public Int32 Id { get; set; }
}

我还有其他一些由 EnitytFramework 生成并代表我的数据库表的类,例如“用户”类:

public class User
{
  public int32 Id{get;set;} 
  public class Name{get;set;}
  public class Age{get;set;}
}

我希望所有 EF 模型类都从 EntityBase 继承:

public class User : EntityBase

我可以手动执行此操作,方法是从 User 类中删除 Id 字段并定义继承,但是在我从 db 更新模型后,所有手动更改都会消失。 有什么方法可以保留或自动向 EF 模型类添加继承?

【问题讨论】:

  • 您应该使用代码优先的方法,您可以控制您的模型类,而不是让 EF 从数据库为您生成模型
  • 可以更新T4模板生成你想要的代码。
  • Cuong Le,Pawel,谢谢。最后我决定使用 CodeFirst,现在继承一切正常。

标签: c# entity-framework ef-database-first database-first


【解决方案1】:

EF 数据库首先使用 t4 文件,如果您手动更改类,保存并编译,T4 将再次生成类,您会丢失所做的更改。 您必须在 T4 模板中进行此更改。搜索EntityClassOpening方法,修改最后一行:

_typeMapper.GetTypeName(entity.BaseType)

使用此代码:

_typeMapper.GetTypeName(entity.BaseType) ?? "EntityBaseClass"

【讨论】:

  • 您好 José,您能否建议如何使 T4 不生成基类的属性?我收到警告“GeneratedEntity.ID 隐藏继承的成员 EntityBaseClass.ID”
  • 这不是EF的问题这是继承的问题,如果你已经在基类中声明了一个id你应该使用它,否则消除对基类的继承。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
相关资源
最近更新 更多