【问题标题】:.NET 4.5, EF 5 and MembershipProvider.NET 4.5、EF 5 和 MembershipProvider
【发布时间】:2012-07-04 19:25:32
【问题描述】:

有谁知道是否要创建一个默认的 MembershipProvider 以与 EF 5 一起使用(如 SqlMembershipProvider 和 ActiveDirectoryMembershipProvider),或者我们仍然需要创建自定义的成员(当然是 Code First)?

【问题讨论】:

  • 您根本不应该将会员提供者和 EF 结合起来。成员资格提供程序有自己的逻辑封装在存储过程中 - 只需按原样使用它,或者您可以破坏其安全实现!将 EF 用于您拥有的类而不是系统类。
  • 据我所知,MSDN 告诉我 MembershipProvider 是一个抽象类,可以继承它以实现自定义会员提供程序。此外,在 MSDN 中指出,例如,如果您使用 Oracle,您将希望实现自己的提供程序。或许你指的是SqlMembershipProvider,它是一个具体的实现,自带数据库(aspnetdb),使用存储过程。
  • 另外我知道,当您需要存储用户凭据时,最好实现自己的提供程序,从 MembershipProvider 继承,而不仅仅是随机发明自己的逻辑。
  • 是的,我指的是 SqlMembrrshipProvider。如果要存储自己的用户凭据实现,则需要发明自己的逻辑,因为 MembershipProvider API 依赖于像 MembershipUser 这样的固定类,EF 代码无法首先映射这些类。
  • 但是我指的不是SqlMembershipProvider,而是抽象类MembershipProvider。所以存储过程不是问题。映射到 MembershipUser 也可能很困难,但并非不可能 - 我想在这里的某个地方我找到了使用适配器模式的解决方案。然而,这不是我最初的问题。我只是想知道是否会在 .NET 4.5 中为 EF 创建一个默认的 MembershipProvider,就像 SQL 一样——比如 EfMembershipProvider。除此之外,在尝试将 MembershipProvider 与 EF 结合使用时,我知道当前存在的许多问题。

标签: membership-provider .net-4.5 entity-framework-5


【解决方案1】:

实际上,在长长的 cmets 和解释之后,它会导致 EF 有一个默认的 MembershipProvider 并且 - 猜猜看,猜猜看 - 它被称为 EFMembershipProvider。 Here is a link.现在这真的很酷,因为将不再需要 MembershipProvider 的第三方实现(或相应的手动实现 - 对于小型项目来说,这有点大而且完全过度杀伤)。

更新 目前,该提供程序似乎不可用。也不知道以后会不会被开发和收录。

由于我们鼓励在使用 EF Code First 时使用 SimpleMembershipProvider 和迁移,这就是我现在正在做的事情。您还可以实现 ExtendedMembershipProvider,这需要更多的努力。

对我来说,目前最好的解决方案是继承 SimpleMembershipProvider 并只修改我需要的东西(我使用之前实现 MembershipProvider 的大部分代码),例如使用电子邮件或用户名进行日志记录。

【讨论】:

  • 我想它仍然需要一些工作才能将它与不同的数据库一起使用。我认为它不会首先使用代码,因为代码首先不是 .NET 的一部分,但这个类看起来像是 .NET 的一部分。因此,每个其他数据库服务器都需要用您自己的替换 EDMX。
  • 嗯,这种情况是绝对可能的,尤其是在他们将 EF 与 .NET 分离之后。然而,这表明他们在 EF 及其与框架的集成方面非常努力——也许将来我们也会看到这样的高级功能。
  • 我目前正在尝试首先使用 ef 提供程序和代码创建一个非常简单的项目,我会看看可能在周一会出现什么(因为周六和周日是我休息的时间)。
  • 你在这方面有什么进展吗?我很想看看。
【解决方案2】:

我已经使用我的 Silversite CMS ASP.NET 库实现了 CodeFirst MembershipProvider & Role,可以在 silversite.codeplex.com 上找到它。该库还支持 CodeFirst 数据库的多个 DbContext。 据我所知,虽然目前实施已被破坏,我还没有时间修复它。还缺少 Profile 和 Session 提供者。但是我从 MySql 提供者那里得到了不应该太难移植的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2015-05-18
    相关资源
    最近更新 更多