我生成了一个Members表和一个MembersType表,它有一个主键,链接到Members表中的Type外键。 MembersType表实际上只有3条记录,因此每个成员可以是MemberType 1,2或3。
现在的问题是,当Entity Framework为Members对象生成数据层和对象时,它会在Members对象中创建一个MemberType对象,但在设置它时我想要做的就是:
Members.MemberType = 1;
但由于上述原因,我必须这样做:
MemberTypes = db.MemberTypes.Where(x => x.MemberTypeId == 1).AsQueryable().First()
无论如何都要阻止它在外键上生成一个对象,所以我可以将它设置为一个int?当然,这比每次查询类型表更快,更节省资源。
答案 0 :(得分:2)
您遇到过EFv1每个人最不喜欢的功能之一。问题是所有是一个实体,所以你不能将外键值作为基元。
您的代码示例显示了如何在EFv1中完成。您可以做的最好的事情是预先缓存这些枚举值,这样您就不必继续从上下文中获取它们。 EFv4通过“FK属性”消除了这种限制,这只是一种说明你可以直接设置的原始外键的奇特方式。