我可能认为这一切都错了,但我有以下数据库表:
当我在VS2008中运行EF向导时,我得到以下模型:
您会注意到在EF模型中显示实体没有EntityTypeID或EntityStatusId的字段。相反,它将其显示为导航属性,因此当我实例化实体时,该字段似乎不可寻址(请原谅术语混淆:实体是我名称空间中不在EF命名空间中的表/类)。如何在实例化实体时分配EntityTypeID和StatusTypeID?
答案 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);
显然,用上面的实际值代替。