我有一个使用ASP.NET Membership,Entity Framework 4和MS SQL 2008 for DB的网站。
我想知道使用ASP.NET成员资格是否会使用Entity Framework传递与数据库的交互?
感谢您的帮助!
答案 0 :(得分:10)
赞成Musa的回答消除否定。没有提到自定义成员资格提供者,但这并不意味着它不是答案。
他是正确的,没有框架附带的EF4特定提供商,但你可以建立自己的。
这实际上整合了问题域,因为您可以清理地将用户链接到您的实体对象的其余部分,而不是将成员资格视为一个单独的黑匣子,您必须小心翼翼。
实现这一目标的方法实际上是继承MembershipProvider并实现抽象方法。
一旦你完成了这个,你就可以为用户做任何你想做的事情,而不是生活在打破你默认获得的SQLMembership表和存储过程的恐惧 - 我不喜欢使用它们,因为它们很难看。 / p>
我刚刚使用我自己的EF4模型,我自己的用户实现等。我使用了此视频附带的示例代码 - http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider。顺便说一句,如果您按原样使用该示例代码,请注意存储过程名称中的几个拼写错误!
答案 1 :(得分:8)
如果您需要自定义成员资格提供程序,则只需创建一个继承MembershipProvider抽象类的类。然后,您需要实现抽象方法,如ValidateUser,UpdateUser,GetUser等。您可以在实现自定义成员资格提供程序方法时使用EntityFramework。
以下文档使用odbc实现自定义成员资格提供程序。您可以使用EntityModel而不是odbc。
答案 2 :(得分:6)
不,SqlMembership以及Sql堆栈中的其他提供程序使用直接调用的存储过程。
如果您愿意,可以在aspnet_db数据库的基础上构建一个EF概念模型,如果您想检查它或与之交互。
但是,我强烈建议您将其视为只读,除非您确切知道要更新或删除的内容。