0

我有 asp.net 成员资格,并且我使用内置的 Create user 方法,因为在此之后它很方便,这取决于我想向 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

1 回答 1

4

我会推荐一些东西。

一:强烈考虑不要向 aspnet_* 表中添加列。如果您想在以后更改您的身份验证方法,即使您不再需要这些表,您也会被困在身边。此外,有一天您可能无法升级会员提供程序的新的、更好的版本,因为您已经自定义了会员模式。

二:相反,为什么不创建一个名为 User(或您喜欢的东西)的新表,它具有您自己的主键,但链接回 ASP.NET Membership 唯一键(guid)。

你的桌子可能看起来像

User UserId (PK) AuthenticationUserId (FK back to aspnet_User table) ClubId (FK back to your club table)

三:我不明白你为什么在你的用户表和你的俱乐部表中都重复了 ClubName。你真的只需要定义一次 ClubName,对吧?保持您的 Club 表不变,但从 user 表中删除 ClubName 列。

您上面用于将俱乐部与用户相关联的代码是正确的并且有效,因为这就是实体框架的工作方式。您将实体相互关联,并从数据模式的某些关系方面抽象出来。首先习惯它有点奇怪,但它确实有效。

于 2009-08-12T00:01:46.887 回答