我可以使用Entity Framework与ASP.NET Membership吗?

10

我正在创建(实际上是重新创建)一个应用程序,其中包含MS-Access数据库中的现有用户和其他数据。该数据将被移动到SQL Server,并且其中一部分涉及迁移用户。我想使用EF进行ORM,并且我相当确定在SQL Server中数据模型将是什么样子。我对EF还不熟悉,但对ASP.NET并不陌生,我希望利用ASP.NET的Membership功能。我正在考虑几种方法来做到这一点,并希望得到一些建议。我目前只做了一点关于这个想法的研究,也许已经在其他地方回答了这个问题。所以,这里有一系列相关的问题。

  1. EF是否可以直接通过某个类或命名空间与ASP.NET Membership一起使用?

  2. 如果我将用户转移到Membership系统,则为了将其userid与其他表中的数据对齐,是否应该像DotNetNuke一样在aspnet_ *表格之上创建另一组用户数据表格?

  3. 我想避免这样一种情况:我仅使用内置的Membership函数进行用户身份验证,并在处理用户标记数据时切换到EF上下文。每次都需要进入Membership用户来绑定到GridView中的列,似乎很笨重,但也许那就是所需的?我需要忍受并在EF中复制Membership类以进行数据检索吗?

  4. 我曾考虑过实现某种类型的EF提供程序用于Membership,想法是也许这样提供程序可以位于整个EF数据模型内部。这是疯狂的想法吗?(我从未编写过自己的提供程序)

随意告诉我我没有任何意义。

2个回答

5
为什么不换个方式呢?您可以为asp.net实现自己的会员提供程序,使用您想要/需要的模型。如果您需要的功能与内置的asp.net会员实现不完全匹配,您可以编写自己的提供程序。如果您只使用一些功能,则只需实现一些方法(您不必填写所有方法的实现)。如果您需要的功能超出了它所支持的范围,使用会员提供程序可能会妨碍您。

如果我这样做,它能够与EF类/EDM整洁地结合吗?我的意思是,你认为我是否可以像数据库一样滚动提供程序,而不是后端EF?此外,是数据库层还是Web/UI层执行哈希等操作? - oasasaurus
是的,你可以实现与所需功能相关的方法,并在其中使用任何代码,例如ado.net、linq2sql、EF、[插入任何ORM]、调用Web服务等,以满足你的需求。 - eglasius
它旨在成为Web UI层,但并不强制您这样做。基本的MembershipProvider类有一些加密/解密方法,尽管我必须说我没有在我的自定义提供程序上使用它们。 - eglasius
当你需要使用域/Kerberos/OpenID/Live等身份验证时,不要放弃整个事情。就像我说的那样,不要假定成员资格始终在数据库中,因为实际上并非如此。 - Craig Stuntz

2
  1. 我们做到了,但我们没有映射会员表。您不应该假定使用SQL会员提供程序。
  2. 我们映射用户标识,而不是DB ID。微妙但重要。再次记住,还有其他会员提供者(例如,域认证)。
  3. 你能澄清一下问题吗?您不需要在EF模型中复制所有成员资料,但您需要已知身份的列表。
  4. 不,一点也不疯狂,但很难,而且可能是不必要的。

关于第三点的澄清:假设我想要从用户输入数据表中绑定记录,而我想要显示的其中一个字段是用户的电子邮件地址,当然这个字段不在该表中。我需要使用带有电子邮件属性的EF用户类吗?我是否需要遍历每一行并调用Membership.GetUser? - oasasaurus
如果您想要一个适用于任何会员提供者的解决方案,无论是基于SQL还是其他方式,那么您需要做的就是按照您所建议的方法将会员信息复制到您的数据库中,并映射复制的表。 - Craig Stuntz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接