使用默认成员关系的 MVC3 实体框架
Posted
技术标签:
【中文标题】使用默认成员关系的 MVC3 实体框架【英文标题】:MVC3 Entity Framework using default membership relationships 【发布时间】:2011-05-29 20:45:14 【问题描述】:我想在自定义表(网站)和与用户相关的默认 aspnet 表之间创建关系。
我使用代码优先,所以对于大多数 FK 关系我会这样做
public ModelName ModelName get; set;
这样,EF 将自动创建 FK 关系。很简单。
令人困惑的是挂钩到 aspnet 用户/成员表的最有效方法。我是否创建了一个新模型用户作为接口,以便我可以实现自定义用户代码?
是否有适合 EF 最佳实践的最佳方法?我基本上只是想将用户与网站表/模型相关联,以便 EF 可以做它的事情。
【问题讨论】:
【参考方案1】:“我是否创建了一个新模型用户作为接口,以便我可以实现自定义用户代码?”
如果您想要灵活性,我会说这是要走的路。如果您将来想更改为某种不同的身份验证数据库结构,这样会更容易。
例如,有一个“AppUser”实体,其中对应的表具有指向 aspnet_Membership 表的“UserID”列的外键。这样,您可以简单地向“AppUser”实体添加属性,而不是尝试更改 MS 表结构(这可能是一个真正的痛苦)。您仍然可以使用 MvcMembership starter Kit DLL 之类的东西与 MVC 项目中的内置 MS Membership 类和函数进行交互。
https://github.com/TroyGoode/MembershipStarterKit
希望这会有所帮助!
【讨论】:
【参考方案2】:这有几个先决条件:
ASP.NET 表必须与您自己的表位于同一数据库中 先前的前提条件意味着您必须手动创建数据库和表(无需自动生成代码优先),或者您必须使用一些自定义初始化程序,将非映射的 ASP.NET 表添加为数据库重建的一部分如果您希望您的模型类与 ASP.NET 表有关系,您必须将 ASP.NET 表建模为另一个实体。我不确定您是否可以为此使用 ASP.NET 类,因为例如 MembershipUser
没有 EF 所需的无参数公共构造函数。因此,您很可能需要创建重复的类及其映射,并在引用 ASP.NET 实体时使用这些类。
【讨论】:
根据您的经验,asp mvc 中的大多数应用程序是否使用此约定,或者是否有其他通常使用的登录系统?以上是关于使用默认成员关系的 MVC3 实体框架的主要内容,如果未能解决你的问题,请参考以下文章