ASP.NET身份MVC 5在本地工作,但切换到外部数据库后会引发Applicationuser错误



我一直在关注此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=&quot;data source=server;initial catalog=databaseName;user id=username;password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" 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文件创建期间生成的连接字符串。使用此连接字符串导致我的错误。我发现这有点欺骗,因为我仍然能够从其他表访问数据,但不能访问关联的身份表。我希望这对未来遇到同一问题的任何人都会有所帮助。

相关内容

  • 没有找到相关文章

最新更新