我的实体框架缺少什么?

时间:2009-08-11 23:24:49

标签: asp.net-mvc entity-framework entity

我有asp.net会员资格,我使用内置的Create用户方法,因为现在很方便,这取决于我想在aspnet_UserTable中添加2个字段的用户。

在我的aspnet_user表中我喜欢这个

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

我有一张与此相关的表格

俱乐部表

ClubID<PK>
ClubName

所以这种关系形成一个俱乐部可以有很多用户。但是一个用户只能拥有一个俱乐部。

所以现在我一直试图弄清楚如何将ClubID添加到aspnet Usertable中,因为它没有显示在Entity Framework Diagram中,因为它没有显示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方法语法,所以如果需要它,你知道这个语法,请你写一下。

1 个答案:

答案 0 :(得分:4)

我会推荐一些东西。

一:强烈考虑不在aspnet_ *表中添加列。如果你想要改变你的身份验证方法,即使你不再需要它们,你也会被困在桌子上。此外,由于您已自定义成员资格架构,因此有一天您可能无法升级会员提供商的新版本。

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

你的表可能看起来像

用户 UserId(PK) AuthenticationUserId(FK返回aspnet_User表) ClubId(FK回到你的俱乐部桌子)

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

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