2009-08-11 78 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