2011-05-29 89 views
3

我想创建自定义表(网站)和与用户相关的默认aspnet表之间的关系。使用默认成员关系的MVC3实体框架

我使用代码优先因此,对于大多数的FK关系,我只想做

public ModelName ModelName { get; set; } 

有了这个,EF会自动创建FK关系。好简单。

令人困惑的是挂入aspnet users/membership表的最有效方法。我是否创建了一个新模型作为接口的用户,以便我可以实现自定义用户代码?

是否有一种最佳方法可以很好地适应EF最佳实践?我基本上只想将用户与网站表格/模型关联起来,以便EF能够完成它的工作。

回答

2

这有几个前提条件:

  • ASP.NET表必须在同一个数据库作为自己的表
  • 上一页前提意味着您必须手动创建数据库和表(无自动代码 - 第一代),或者你必须使用一些自定义的初始化如果你希望你的模型类与ASP.NET的表,你必须符合ASP.NET关系,将添加非映射ASP.NET表数据库娱乐

的一部分表为一个nother实体。我不确定您是否可以使用ASP.NET类,因为例如MembershipUser没有EF所需的无参数公共构造函数。所以你很可能需要创建重复的类及其映射,并在引用ASP.NET实体时使用这些类。

+0

根据您的经验,asp mvc中的大多数应用程序是否使用此约定,或者是否有通常使用的另一个登录系统? – krx 2011-05-30 13:21:20

3

“我是否创建了一个新模型作为接口的用户,以便我可以实现自定义用户代码?”

如果你想要灵活性,我会说这是要走的路。如果你想在将来改变某种不同的身份验证数据库结构,这样会更容易。

例如,拥有一个“AppUser”实体,其中相应的表具有到aspnet_Membership表的“UserID”列的外键。这样,您可以简单地将属性添加到您的“AppUser”实体,而不是尝试更改MS表结构(这可能是一个真正的痛苦)。您仍然可以使用类似MvcMembership入门工具包DLL的内容,与MVC项目中的内置MS Membership类和函数进行交互。

https://github.com/TroyGoode/MembershipStarterKit

希望这有助于!