0

1.如果我创建新的 MVC 项目,它有默认的连接字符串:

< add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial
Catalog=aspnet-OneVeryBad.Web-20130301153805;Integrated   
Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-OneVeryBad.Web-20130301153805.mdf" 
providerName="System.Data.SqlClient" />

2. 我创建了继承自 DbContext 的上下文:

public class BadContext : DbContext
{
    public BadContext() : base("BadContext")
    {
    }

    /* DbSets */
}

3. 将连接字符串名称更改为 BadContext 以使用 EF:

< add name="BadContext" connectionString="Data Source=(LocalDb)\v11.0;Initial 
Catalog=aspnet-OneVeryBad.Web-20130301153805;Integrated 
Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-OneVeryBad.Web-
20130301153805.mdf" providerName="System.Data.SqlClient" />

现在我可以成功地将数据存储到 LocalDb,但无法注册用户:

数据库“master”中的 CREATE DATABASE 权限被拒绝。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:数据库“master”中的 CREATE DATABASE 权限被拒绝。

除非我将连接字符串改回原来的:

< 添加名称="默认连接" ...

我通过 VS 服务器资源管理器在本地数据库中看到了我的上下文表和成员表。但不能使成员资格与 EF 连接字符串一起使用。我该如何解决这个问题?最初我想将所有表存储在 localdb 中,以便无论我走到哪里,它都可以在项目中始终与我同在。

4

1 回答 1

0

您需要更改 Filters 文件夹下 InitializeSimpleMembershipAttribute.cs 文件中的连接字符串名称。

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", 
    "UserId", "UserName", autoCreateTables: true);

到:

WebSecurity.InitializeDatabaseConnection("BadContext", "UserProfile", 
    "UserId", "UserName", autoCreateTables: true);

您是否想过使用“在文件中查找”功能来搜索“DefaultConnection”?

于 2013-03-01T21:05:21.067 回答