合并MyDbContext到Asp.net IdentityDbContext。

8 浏览
0 Comments

合并MyDbContext到Asp.net IdentityDbContext。

我在网上看到了很多示例,但没有一个能够完整地指导我如何将自己的DbContext与Asp.net IdentityDbContext合并。

有人可以帮我一步步解释吗?我还处于零步骤,我想要的是在我的数据库中生成由ASP.net IdentityDbContext生成的表格,这样我就可以在自己的数据库中保留用户数据。我该如何实现这个目标?

提前感谢 🙂

0
0 Comments

问题出现的原因:在ASP.NET MVC项目中使用Identity框架时,想要将自定义的DbContext(ContactContext)与IdentityDbContext(ApplicationDbContext)合并,以便在一个上下文中管理应用程序数据和身份认证数据。

解决方法:

1. 创建一个新的ASP.NET MVC项目,选择"Individual User Accounts"作为身份认证选项。

2. 在Models命名空间下创建Contact类作为简单的模型类。

public class Contact {
    public int ContactID { get; set; }
    public string Name { get; set; }
    public string Phone { get; set; }
}

3. 在Models命名空间下创建ContactContext类作为数据库上下文,继承自IdentityDbContext。

public class ContactContext : IdentityDbContext {
    public ContactContext()
        : base("ContactContext") {
    }
    public DbSet Contacts { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Conventions.Remove();
    }
    public static ContactContext Create() {
        return new ContactContext();
    }
}

4. 在Web.config文件中更新数据库连接字符串,将name属性修改为"ContactContext",并修改AttachDbFilename和Initial Catalog的值为更易理解的名称。


5. 打开IdentityModels.cs文件,将ApplicationUser类从文件中剪切并粘贴到Contact.cs文件中,并解决缺少的命名空间引用。

6. 在整个项目中查找并替换ApplicationDbContext为ContactContext。

7. 进行清理构建,以确保代码没有错误。

0
0 Comments

在ASP.NET Identity中,有时候我们需要将自定义的DbContext合并到IdentityDbContext中。下面是一个关于这个问题的链接,你可以查看一下,或许能帮到你:https://stackoverflow.com/q/19902756/687549。

0
0 Comments

问题的出现原因是无法将现有的数据库上下文(MyDbContext)与IdentityDbContext合并,因为asp.net身份框架表的上下文必须继承自IdentityDbContext<YourUserTable>,而其他表可能继承自DbContext。因此,如果要使用身份框架内置的方法支持(如UserManager等),则必须使用两个单独的数据库上下文。

解决方法是使用现有的数据库与身份框架结合使用,只需使用模型绑定正确地将数据库表与身份框架EF代码优先方法绑定即可。有一个YouTube视频教程可以帮助您了解如何实现此任务。实际上,这个视频演示了如何在现有数据库中使用Identity 2.0。

希望这可以帮助到您。

以下是视频链接:

Part 1: https://www.youtube.com/watch?v=elfqejow5hM

Part 2: https://www.youtube.com/watch?v=JbSqi3Amatw

0