登录失败 - LocalDB,EF,WebSecurity

时间:2013-08-23 09:13:57

标签: c# asp.net asp.net-mvc entity-framework localdb

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

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

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

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

在Application_Start()中的这一行;

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

如果我对域模型进行了更改并更改了“Inital Catalog”中的名称,则可以正常工作。

我的connectionstring看起来像这样;

<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; }

    }       
}

如果我没有添加enought信息或代码,只需说出这个词,我就会尝试提供

connectionstring或EFDContext实现有什么问题吗?任何输入都是适用的:)

1 个答案:

答案 0 :(得分: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. 将连接字符串中的初始目录更改为数据库名称