2009-11-06 65 views
0

我生成了一个成员表和一个MembersType表,它具有一个链接到成员表中的类型外键的主键。 MembersType表仅仅是3条记录,所以每个Member可以是MemberType 1,2或3.设置实体框架字段

现在的问题是,当Entity Framework为Members对象生成数据层和对象时,它会创建一个MemberType在成员对象的对象,但我希望能够做的时候将它设置为:

Members.MemberType = 1; 

但上述的原因,我不得不这样做:

MemberTypes = db.MemberTypes.Where(x => x.MemberTypeId == 1).AsQueryable().First() 

反正是有阻止它在外键上生成对象,所以我可以将它设置为i NT?毫无疑问,这比每次查询类型表更快,更节省资源。

回答

2

您遇到了EFv1中每个人最不喜欢的功能之一。问题是,的一切是一个实体,所以你不能获得外键值作为原语。

您的代码示例显示了它如何在EFv1中完成。你可以做的最好的事情就是缓存这些枚举值,所以你不必从上下文中获取它们。 EFv4通过“FK Properties”消除了这个限制,这只是一种说法,可以直接设置原始外键。

+0

谢谢,希望这是固定的.net 4.0! – David 2009-11-06 22:18:41