我在MVC代码首次迁移时使用this pluralsight视频来保留我的默认MVC IdentityDb上下文并为自定义表创建另一个上下文。从那时起,我在尝试连接到数据库的连接时遇到错误:
在数据库' master'中拒绝CREATE DATABASE权限。 .........
它在本地工作。我的连接字符串是正确的,我的上下文类指向正确的连接字符串名称:
public class IdentityDb : IdentityDbContext<ApplicationUser>
{
public IdentityDb()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static IdentityDb Create()
{
return new IdentityDb();
}
}
public class CustomDb : DbContext
{
public CustomDb() : base("DefaultConnection") { }
public DbSet<Inquiry> Inquiry { get; set; }
public DbSet<Product> Product { get; set; }
}
连接字符串:
<add name="DefaultConnection" connectionString="server=***.db.1and1.com; initial catalog=***;uid=***;pwd=***" providerName="System.Data.SqlClient" />
我已经读过连接字符串名称应该与上下文类名相同但是因为我有两个上下文,所以我需要一个我在上下文中指定的公用名(DefaultConnection)。
它可以连接到我的本地数据库但不能连接到联机,所以我确实想知道这是否与迁移历史表是最新的在线和EF 6试图更新数据库但迁移表中的条目匹配。
任何帮助表示感谢。
*更新*
我尝试使用this指南重置EF迁移,如果迁移与在线数据库不同步,则可能导致EF尝试重新创建数据库导致此问题。但问题仍然存在!
我现在分别将这些行添加到我的上下文构造函数中:
Database.SetInitializer<IdentityDb>(null);
Database.SetInitializer<CustomDb>(null);
这已经停止了错误,但有点打败了EF的目的,因为我现在必须在创建迁移时删除它并手动将更改编写到在线数据库中,然后将其重新放入以使网站在线工作。