2009-11-06 102 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