我正在sqlExpress DB上构建MVC3 EF Code First应用程序.对我来说非常重要的是,只要架构发生变化或类似的情况,就会自动生成数据库.现在我正在为我的应用程序添加身份验证,并查看了MVC附带的身份验证框架.但是,因为它似乎需要我每次生成新数据库时运行aspnet_regsql.exe.我真的需要Authentication表与我的应用程序数据库在同一个数据库中.
我基本上想知道我的选择是什么;
>是否可以使用身份验证框架并以与Entity框架生成其他数据相同的方式自动生成它?
>如果没有,我可以编写自己的身份验证,但是还有部分我可以使用吗?换句话说,我是否需要编写自定义成员资格提供程序或类似的东西?我想继续使用属性[authenticate]等.
我可以在正确的方向上使用一些指针.
解决方法
您可以从
CodeFirst Membership Provider
开始 – 这是一个基于代码优先的自定义提供程序 – 如果需要可以扩展(也可以通过网站上的推荐用法阅读).
开始 – 这是一个基于代码优先的自定义提供程序 – 如果需要可以扩展(也可以通过网站上的推荐用法阅读).
以上是IMO的最佳方式,因为您可以真正地集成两者(例如,如果您可能需要直接访问例如会员表,与您自己的用户/客户端表等相关).
但你也有其他选择……
a)编写自己的Db初始化程序并对数据库进行种子处理(就像这里建议的那样https://stackoverflow.com/a/5462981/417747.注意:您可以使用不同的方法,从运行aspnet表sql脚本到创建aspnet表的模型等)或者
b)使用“保留”数据库的Db初始化程序 – 并首先使用aspnet表准备数据库
c)(最后但并非最不重要)使用迁移(正如@Chris正确建议的那样).迁移非常强大.您可以运行Update-Database -Script来生成sql而不是更改Db – 然后将其组合(使用aspnet脚本或种子数据库)并将其用于创建或更新数据库.迁移需要一些学习,但再次非常值得为更复杂的事情付出努力.
希望这可以帮助