MVC3实体框架使用默认成员关系

时间:2011-05-29 20:45:15

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

我想在自定义表(网站)和与用户相关的默认aspnet表之间创建关系。

我正在使用代码优先,所以对于大多数FK关系我只会做

public ModelName ModelName { get; set; }

有了这个,EF将自动创建FK关系。很容易。

令人困惑的是挂钩到aspnet用户/成员资格表的最有效方法。我是否创建了一个新模型用作界面的用户,以便我可以实现自定义用户代码?

是否有最佳方法可以很好地融入EF最佳实践?我基本上只想将用户与网站表/模型联系起来,以便EF可以做到这一点。

2 个答案:

答案 0 :(得分:3)

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

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

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

https://github.com/TroyGoode/MembershipStarterKit

希望这有帮助!

答案 1 :(得分:2)

这有几个先决条件:

  • ASP.NET表必须与您自己的表位于同一个数据库中
  • 以前的前提条件意味着您必须手动创建数据库和表(不需要自动代码优先生成),或者必须使用一些自定义初始化程序,它将添加非映射的ASP.NET表作为数据库重新创建的一部分

如果希望模型类与ASP.NET表有关系,则必须将ASP.NET表建模为另一个实体。我不确定你是否可以使用ASP.NET类,因为例如MembershipUser没有EF所需的无参数公共构造函数。因此,您很可能需要创建重复的类及其映射,并在引用ASP.NET实体时使用这些类。