【发布时间】:2010-09-13 13:25:49
【问题描述】:
我有一个使用 ASP.NET Membership、Entity Framework 4 和 MS SQL 2008 for DB 的网站。
我想知道如果使用 ASP.NET Membership 与数据库的交互是否会使用 Entity Framework 传递?
感谢您的帮助!
【问题讨论】:
标签: asp.net asp.net-membership
我有一个使用 ASP.NET Membership、Entity Framework 4 和 MS SQL 2008 for DB 的网站。
我想知道如果使用 ASP.NET Membership 与数据库的交互是否会使用 Entity Framework 传递?
感谢您的帮助!
【问题讨论】:
标签: asp.net asp.net-membership
对 Musa 的回答表示赞成,以消除负面影响。没有提到自定义会员提供者,但这并不意味着它不是答案。
他在正确的位置,框架没有附带 EF4 特定的提供程序,但您可以构建自己的。
这实际上巩固了问题域,因为您可以干净利落地将用户链接到您的其余实体对象,而不是将成员身份视为一个单独的黑匣子,您必须小心翼翼地绕过。
做到这一点的方法确实是从 MembershipProvider 继承并实现抽象方法。
一旦你完成了这些,你就可以对用户等做任何你想做的事情,而不是担心破坏你默认获得的 SQLMembership 表和存储过程——我不喜欢使用它们,因为它们很丑。
我刚刚完成了这项工作,使用了我自己的 EF4 模型、我自己的用户实现等。我使用了该视频附带的示例代码 - http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider。顺便说一句,如果您按原样使用该示例代码,请注意存储过程名称中的几个拼写错误!
【讨论】:
如果你想要一个自定义的会员提供者,你只需要创建一个继承 MembershipProvider 抽象类的类。然后您将需要实现抽象方法,如 ValidateUser、UpdateUser、GetUser 等。您可以在实现自定义成员资格提供程序方法时使用 EntityFramework。
以下文档使用 odbc 实现自定义成员资格提供程序。您可以使用 EntityModel 代替 odbc。
【讨论】:
不,SqlMembership 以及 Sql 堆栈中的其他提供程序,使用直接调用的存储过程。
如果您愿意,可以在您的 aspnet_db 数据库之上构建一个 EF 概念模型,如果您想检查它或与之交互。
但我强烈建议您将其视为只读,除非您确切知道要更新或删除的内容。
【讨论】: