asp.net-mvc-4 – SimpleMembershipInitializer不会初始化

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-4 – SimpleMembershipInitializer不会初始化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在努力在我的EntityFramework / MVC4 / DatabaseFirst项目中使用简单的成员方案.我已经找到了很多首先使用代码的例子,但是对于DB来说没什么.

我遇到的问题是InitializeDatabaseConnection抛出一个错误(“无法找到所请求的.Net Framework数据提供程序.它可能没有安装.”)代码如下所示:

WebSecurity.InitializeDatabaseConnection("DALEntities","tblContacts1","ContactID","EMail",autoCreateTables: true);

我不确定DataProvider失败了什么.如果我尝试跟踪’into’InitializeDatabaseConnection调用,它会立即抛出错误.

我错过了什么?

信息:
DALEntities是EF其余部分使用的connectionString的名称.以下代码工作正常….

public ActionResult Test() {
        using (var db = new DALEntities()) {
            var query = from i in db.TBLINVENTORies
                            orderby i.ITEMNAME
                            select i;
            var cnt = query.Count();
            string str = "Total Inventory: " + cnt;
            return Content(str);
        }
    }

我在web.config中的连接字符串部分:

<connectionStrings>
    <add name="DALEntities" connectionString="Metadata=res://*/DAL.DAL.csdl|res://*/DAL.DAL.ssdl|res://*/DAL.DAL.msl;provider=System.Data.sqlClient;provider connection string=&quot;data source=SOMECOMPUTER;initial catalog=SOMEDB;persist security info=True;user id=SOMEID;password=SOMEPASS;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

这篇文章似乎是在问同一个问题(但在模型优先的背景下),但还没有解决方案:Using SimpleMembership with EF model-first

另外,我看到WebSecurity.InitializeDatabaseConnection()有一个带有帮助文本的重载:初始化成员资格系统((blah blah< snip> ProviderName:ADO.NET数据提供者的名称.如果你想使用Microsoft建议使用sql Server,WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String,String,Boolean)重载.我确实希望连接到MSsql服务器……这是必需的吗?

解决方法

给您带来麻烦的提供程序是您的连接字符串中指定的那个,即System.Data.EntityClient.我怀疑问题是因为你的项目是数据库优先的,而简单的成员资格是使用代码优先.我认为您不能在单个数据库中混合使用这些方法.尝试将其重新放回到用于IntializeDatabaseConnection的DefaultConnection的位置. MVC4脚手架生成的web.config中应该有一个DefaultConnection.此连接字符串通常使用System.Data.sqlClient作为提供程序.

如果要将简单成员资格保留在用于存储域信息的数据库中(即DALEntities),则需要将在域上使用EF的方法更改为代码优先.如果要保留项目数据库,首先需要在数据库develop custom member and role providers中设计自己的成员模式.如果您真的想将用户信息集成到域模型中,这可能是最好的方法.

猜你在找的asp.Net相关文章