2009-08-11 62 views
0

我有asp.net成員資格,我使用內置的創建用戶方法,因爲現在很方便,現在取決於用戶我想向aspnet_UserTable添加2個字段。我的實體框架丟失了什麼?

在我aspnet_user表我有這樣

// All Standard Fields that come with this table 
ClubID<nullable) 
ClubName <nullable) 

我有一個關於這個

俱樂部表

ClubID<PK> 
ClubName 

所以這種關係形成了一個俱樂部可以有許多用戶表。但是一個用戶只能有1個俱樂部。

所以現在我一直在試圖找出如何將ClubID添加到aspnet Usertable,因爲它不顯示在實體框架圖中,因爲它不顯示FK。

// Note in this case I am just using EF made to create but in reality I will use the Membership.Create. 
aspnet_Users test = aspnet_Users.Createaspnet_Users(Guid.NewGuid(), Guid.NewGuid(), "myTest5", "mytest5", false, DateTime.Now); 

      test.Club = Club.CreateClub("One224", "Two224"); 
      test.ClubName = "go"; 

      MyEntities.AddToaspnet_Users(test); 

      MyrEntities.SaveChanges(); 

所以我有工作,但它只是沒有意義,我希望有更好的辦法。就像我嘗試創建俱樂部,然後將其粘貼在test.club中。

此添加的ClubID主鍵,但不添加clubName。

因此,我必須單獨添加俱樂部名稱。喜歡爲什麼?沒有更好的方法嗎?

我也更喜歡linq方法的語法,所以如果需要的話,你知道這個語法,你可以寫在那。

回答

4

我會推薦幾件事情。

其中:強烈考慮不向aspnet_ *表中添加列。如果你想要改變你的認證方法,即使你不再需要它們,你也會被卡在身邊。此外,有一天會有一個新的更好的成員資格提供者版本,因爲您已經自定義了成員資格模式,所以您將無法升級。

二:相反,爲什麼不創建一個名爲User(或您喜歡的東西)的新表,該表具有您自己的主鍵但可鏈接回ASP.NET成員資格唯一鍵(guid)。

您的表可能看起來像

用戶 用戶ID(PK) AuthenticationUserId(FK回aspnet_User表) ClubId(FK回到你的俱樂部表)

三:我不瞭解你爲什麼在用戶表和俱樂部表中重複出現ClubName。你真的只需要定義一次ClubName,對吧?保持俱樂部表的狀態,但從用戶表中刪除ClubName列。

上面關於將俱樂部與用戶關聯的代碼是正確的,因爲這就是實體框架的工作原理。您將實體相互關聯,並從數據模式的某些關係方面抽象出來。先習慣它有點奇怪,但它確實有效。

+0

雅我覺得我會redisign,所以通過使用UserID並從表中獲取這兩個領域的關係。我想我當時的想法是,那麼我不必開始環顧其他桌子找到我想要的東西。由於某些用戶在製作時需要ClubName和UserName,因爲我的數據庫中如何使用ClubName =「A」UserName =「bob」和ClubName =「B」UserName =「bob」,這些應該是視爲分離用戶。 – chobo2 2009-08-12 00:16:45

+0

所以現在它是俱樂部表有ClubName,ClubID和UserID,但我仍然需要獲得userID顯示如何在這個俱樂部表中,但我仍然不能添加它。 – chobo2 2009-08-12 00:59:37

+0

我強烈支持這個建議 - 不要修改aspnet_users表,擴展它!藉助EF,您可以從數據庫中的這些表格輕鬆地在代碼中創建漂亮的對象模型 – 2009-08-12 05:06:35