2012-07-04 103 views
4

有谁知道是否有将创建一个默认的MembershipProvider用于EF 5(如SqlMembershipProvider和ActiveDirectoryMembershipProvider),或者我们仍然必须创建自定义的(Code First当然)?.NET 4.5,EF 5和MembershipProvider

+1

您不应该将会员提供商和EF结合在一起。成员资格提供程序将自己的逻辑封装在存储过程中 - 只需按原样使用它,或者可以破坏其安全实现!对于您自己不适用于系统类的类,请使用EF。 –

+0

据我所知,MSDN告诉我MembershipProvider是一个抽象类,它可以被继承以实现自定义成员资格提供程序。此外,在MSDN中声明,如果您使用Oracle,则需要实施自己的提供程序。也许你指的是SqlMembershipProvider,它是一个具体的实现,带有自己的数据库(aspnetdb)并使用存储过程。 – Unknown

+0

另外我知道,当你需要存储用户凭证时,如果你实现自己的提供者,从MembershipProvider继承而不是随机发明你自己的逻辑将是最好的。 – Unknown

回答

7

实际上,经过长时间的评论和解释后,结果会出现EF的默认MembershipProvider,并且猜测是什么,猜测是什么 - 它被称为EFMembershipProvider。 Here is a link.现在,这真的很酷,因为不再需要MembershipProvider的第三方实现(或相应的手动实现 - 对于小型项目而言,这种实现是大而全的)。

UPDATE 目前看来这个提供者不可用。我不知道它是否会在未来发展和包括在内。

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

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

+0

不错的搜索。 –

+0

我想它仍然需要一些工作来使用它与不同的数据库。我不认为它会首先使用代码,因为代码首先不是.NET的一部分,但是这个类看起来像.NET的一部分。因此,其他数据库服务器都需要用您自己的EDMX替换。 –

+0

那么这种情况是可能的,尤其是在他们将.NET从EF中分离出来之后。然而,这表明他们正在EF上努力工作,并将其与框架整合在一起 - 也许将来我们也会看到如此先进的吸引力。 – Unknown

1

我已经在silversite.codeplex.com上实现了一个CodeFirst MembershipProvider &角色与我的Silversite CMS ASP.NET库。该库还支持CodeFirst数据库的多个DbContext。 据我所知,虽然目前的实施已经中断,我没有时间去修复它。 Profile和Session提供程序仍然不足。但是我从MySql提供者那里得到的代码不应该太难以移植。