实体框架:模型不反映DB

时间:2009-02-12 13:50:23

标签: entity-framework

我可能认为这一切都错了,但我有以下数据库表:

alt text

当我在VS2008中运行EF向导时,我得到以下模型:

alt text

您会注意到在EF模型中显示实体没有EntityTypeID或EntityStatusId的字段。相反,它将其显示为导航属性,因此当我实例化实体时,该字段似乎不可寻址(请原谅术语混淆:实体是我名称空间中不在EF命名空间中的表/类)。如何在实例化实体时分配EntityTypeID和StatusTypeID?

1 个答案:

答案 0 :(得分:3)

是的,实体框架隐藏了外键ID属性并显示了导航属性。关于它为什么这样做,here进行了长时间的讨论。分配对另一个实体的引用的常用方法是分配实体实例,而不是外键ID值,如下所示:

var foo = new Entity();
var status = (from .... select ...).FirstOrDefault();
foo.StatusCodes = status;

但是,如果您碰巧知道它是什么,可以直接分配外键ID:

foo.StatusCodesReference = new EntityKey(
   "MyEntityContextName.StatusCodesEntitySetName", "StatusCodeId", value);

显然,用上面的实际值代替。