我一直在关注此Microsoft文章,以实现安全的Web应用程序。它可以与本地数据库工作正常。但是,当我将连接字符串更改为外部数据库时,我在尝试与身份表进行交互时始终会出现错误
- aspnetusers
- aspnetroles
- aspnetuserclaims
- aspnetuserlogins
- aspnetuserroles
这些桌子已在外部Azure DB中重新创建,我遵循了这次演练。我尝试注册时遇到的错误是
实体类型应用程序器不是当前上下文模型的一部分。
试图注册时,它在帐户controller中的这一代码上失败
var user = await UserManager.FindByNameAsync(model.Email);
我想采用数据库的第一个方法,因为外部数据库已经具有预先存在的数据。我查看了其他几个帖子和网站,但我一直无法解决问题。我还尝试通过软件包管理器控制台启用和更新DB,没有成功。
预先感谢您!
这是ApplicationDbContext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
//ApplicationDbContext.Equals("", "");
return new ApplicationDbContext();
}
public System.Data.Entity.DbSet<proj.Models.Obj1> Obj3 { get; set; }
public System.Data.Entity.DbSet<proj.Models.Obj2> Obj3 { get; set; }
public System.Data.Entity.DbSet<proj.Models.Obj3> Obj3 { get; set; }
}
我不喜欢回答自己的问题,但这是解决我的问题的原因。
我必须从生成的连接字符串中更改连接字符串
<add name="DefaultConnection" connectionString="metadata=res://*/Models.DBName.csdl|res://*/Models.DBName.ssdl|res://*/Models.DBName.msl;provider=System.Data.SqlClient;provider connection string="data source=server;initial catalog=databaseName;user id=username;password=password;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
到这个
<add name="DefaultConnection" connectionString="Data Source=server; Initial Catalog=databaseName; User ID=username; Password=password; Connect Timeout=60;" providerName="System.Data.SqlClient" />
i首先使用EDMX文件创建期间生成的连接字符串。使用此连接字符串导致我的错误。我发现这有点欺骗,因为我仍然能够从其他表访问数据,但不能访问关联的身份表。我希望这对未来遇到同一问题的任何人都会有所帮助。