无法在Code-First中继承自定义类型属性

时间:2011-07-28 09:09:11

标签: c# oop entity-framework orm ef-code-first

我正在开发新的实体模型。

我确定了几个自然需要继承的重复属性(列),如Id,CreatedBy,CreatedAt等。

现在,我为这个问题创建了一个基类,一切正常,直到我在基类中定义自定义类型属性,例如: 公共用户CreatedBy {get; set;}

运行应用程序时,抛出EngineExecutionException。

如果我省略公共用户CreatedBy {get; set;} 并且只保留int,string,DateTime属性,没关系,我可以看到它在数据库创建中反映出来。

我的错误是什么?

2 个答案:

答案 0 :(得分:0)

我认为您的属性应该是虚拟的,这意味着此属性是外键。

答案 1 :(得分:0)

如果UserID是User表的一个键(比如说int),那么你就有了

public int UserID { get; set; }
public virtual User CreatedBy { get; set; }

UserID属性是对表中字段的直接引用。 CreatedBy属性是对User对象的引用,该对象将表示User表。如其他地方所述,virtual关键字用于使用户对象延迟加载。

UserID属性与User表和对象上的主键匹配。如果它们的命名不同,有很多方法可以匹配它们,但如果它们是最简单的话,它们就是最简单的。如果您可以为CreatedBy提供更多信息,例如类型,它在数据库中的表示方式等等。我可以为您的设置提供更具体的答案。

*已编辑格式化。