0

当我尝试在 VS2010 中针对远程数据库本地调试我的 MVC4/EF 5 应用程序时,会发生以下情况。

错误来源(InitializeSimpleMembershipAttribute.cs):

using (var context = new UsersContext())
{
    if (!context.Database.Exists()) // <-- Exception here!
    {
        // Create the SimpleMembership database without Entity Framework migration schema

堆栈跟踪(仅第一行):

[SqlException (0x80131904): Login failed for user 'mydb'.]

调试后我发现使用了以下连接字符串:

"Data Source=localhost;Initial Catalog=mydb;Persist Security Info=True;User ID=mydb;Password=mydb;Application Name=EntityFrameworkMUE"

这是 Web.Config 中真正的连接字符串:

<add name="DefaultConnection" connectionString="Data Source=hostname.com;Initial Catalog=mydb;User ID=mydb;Password=mydb;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

AccountModels.cs 中的代码片段:

public class UsersContext : DbContext
{
    public UsersContext() : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

很明显应该使用 DefaultConnection ,但在此过程中对其进行了修改......

当我将站点发布到同时托管 sql 服务器的远程服务器时,一切正常。

其他帖子中提到的解决方案对我不起作用,例如将 Web.Config 中的连接命名为我的 DbContext 类的名称。

编辑 - 我做了更多的实验......

这不起作用:

public class UsersContext : DbContext
{
    public UsersContext() : base(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

但这确实:

public class UsersContext : DbContext
{
    public UsersContext()
        : base("Data Source=hostname.com;Initial Catalog=mydb;User ID=mydb;Password=mydb;MultipleActiveResultSets=True")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

在本地调试时,我感觉我的 Web.Config 没有被使用/识别。

仍然需要帮助:-P

4

3 回答 3

0

我最近经历过这个,它与Name=EntityFrameworkMUE有关,我们的解决方案是在应用程序设置文件中指定连接字符串,然后通过ConfigurationManager引用基础。

base(new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString), true) {}
于 2013-06-26T15:25:09.987 回答
0

也许我的回答会很奇怪,但我遇到了这种情况,我在改变我的连接字符串时解决了它,如下所示。

DefaultConnection

UsersContext

我将连接字符串更改为 DbContext 类名。

于 2013-06-26T18:31:51.460 回答
0

您可能在发布期间对 web.config 进行 XSLT 转换。您应该检查是否有 web.release.config 文件(或 web.debug.config)并更改本地 web.config 文件中的默认连接连接字符串以匹配。

于 2013-06-26T16:52:17.410 回答