1

我有一个 MVC 项目形式的域模型和 webGUI,当对域模型进行更改时,我没有迁移任何 DB 内容,而是我刚刚更改了连接字符串中的“初始目录”到一个新名称,localDB 刚刚创建了一个新名称(可能是一种愚蠢的方法,但它已经奏效了)

现在我添加了 Websecurity,它第一次就像一个魅力,但是当我在“初始目录”上更改名称时,我得到了一个;

“无法打开登录请求的数据库“Dev1”。登录失败”

“用户 'My-Comuter\MyUser 登录失败”

在 Application_Start() 的这一行;

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

如果我对域模型进行更改并将“初始目录”上的名称改回它就可以了。

我的连接字符串看起来像这样;

<add name="EFDbContext" connectionString="Data Source=(localDB)\v11.0; Initial Catalog = Dev1;Integrated Security=True; MultipleActiveResultSets=True; Trusted_Connection=True" providerName="System.Data.SqlClient" />

和这样的上下文类;

using MyApp.Domain.Entities;
using System.Data.Entity;

namespace MyApp.Domain.Concrete
{
    public class EFDbContext : DbContext
    {
        public DbSet<SomeData> SomeDataSet{ get; set; }    
        public DbSet<UserProfile> UserProfiles { get; set; }

    }       
}

如果我没有添加足够的信息或代码,只需说出这个词,我会尽力提供

connectionstring 或 EFDContext 实现有什么问题吗?任何输入都会被应用:)

4

1 回答 1

1

我在聊天中与他交谈,并发现了他需要更新的内容。希望这对其他人有帮助:

  1. 在服务器资源管理器中,在数据连接下确保连接是 EFDbContext

  2. 在您的 Application_Start() 方法中,在 WebSecurity 行周围添加以下 if 语句,以防止初始化发生多次:

    System.Data.Entity.Database.SetInitializer<EFDbContext>(new DropCreateDatabaseAlways<EFDbContext>());
    // System.Data.Entity.Database.SetInitializer<EFDbContext>(EFDbContext>(null);
    
    if (!WebMatrix.WebData.WebSecurity.Initialized)
     {
         WebSecurity.InitializeDatabaseConnection("EFDbContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);
     }
    
  3. 将连接字符串中的初始目录更改为数据库名称

于 2013-09-25T20:02:27.597 回答