我有一个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实现有什么问题吗?任何输入都是适用的:)
答案 0 :(得分:1)
我在聊天中与他交谈并找出了他需要更新的内容。希望这会有助于其他人:
在“服务器资源管理器”中的“数据连接”下,确保连接为EFDbContext
在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);
}
将连接字符串中的初始目录更改为数据库名称