跨上下文和程序集的ASP.NET MVC实体框架连接实体

佩斯曼

我有一个MVC 5项目,在该项目中我已将模型分离为一个独立的项目,例如Project.Models。身份(ApplicationUser)模型及其DbContext仍在主项目中,如默认MVC 5项目支架中所示。Project.Models程序集中的实体之一必须具有作为ApplicationUsers列表的属性。

现在,我开始认为将实体模型分离到一个单独的项目中并不是一个好主意,因为现在我在不同的上下文和程序集中拥有实体模型和Idenity模型。

如果这些ApplicaitonUsers在单独的程序集中,则如何使它们成为实体对象的一部分?我应该将项目合并回一个程序集和DbContexgt中,还是有一种简单的方法来解决此问题?我不能DbSet<MainProject.ApplicationUser>在Project.Models的DbContext中定义一个,因为这将意味着循环引用。

谢谢。

凉爽的

您可以在“模型”项目中添加与身份相关的包Microsoft.AspNet.IdentityMicrosoft.AspNet.Identity.EntityFramework然后将ApplicationUser移动到“模型”项目中。

您还可以像这样在ApplicationUser中添加配置文件数据:

public class ApplicationUser : IdentityUser
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, string> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);

        // Add custom user claims here

        return userIdentity;
    }
}

另外,要使其成为单个DBContext,可以直接从dbcontext类中的IdentityDbContext继承像这样:

public partial class MyDBContext : IdentityDbContext<ApplicationUser>
{
    public MyDBContext()
        : base("name=DefaultConnection", throwIfV1Schema: false)
    {
    }
}

这样,您就无需DbSet<MainProject.ApplicationUser>在上下文类中进行定义

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

实体框架,ASP.NET,上下文缺失

没有实体框架数据库连接的ASP.NET MVC

如何在 ASP.NET MVC 中使用实体框架连接两个或多个表?

实体框架和ASP.NET MVC更复杂的模型

结合使用ASP.NET MVC和实体框架

ASP.NET vNext MVC和实体框架问题

ASP.NET MVC LINQ实体框架递归

ASP.NET MVC处理时区实体框架

ASP.NET MVC 5实体框架-关系

ASP.NET MVC 实体框架 ID 不能为空

使用实体框架ASP.NET MVC登录过程

实体框架(ASP.NET MVC)的导航属性问题

实体框架中的 System.NotSupportedException (ASP.NET MVC)

ASP.NET MVC 实体框架查询搜索

Asp.Net 核心 MVC 微软实体框架

在web.config中设置连接字符串是否存在安全漏洞?(ASP.NET MVC,实体框架)

具有相关实体的ASP.NET MVC 4错误更新实体框架模型

在实体框架ASP.NET MVC中的LINQ到实体中构造查询

.NET核心和实体框架

实体框架和ASP.NET身份

ASP.NET Core Blazor 服务器中的实体框架上下文生命周期

实体框架/ ASP Net Core 2.0-添加适用于某些上下文但不适用于其他上下文的迁移

C#:ASP.NET MVC应用程序的实体框架6.2

在asp net core实体框架mvc中从数据库绑定菜单和子菜单

如何使用 ASP.NET MVC 和实体框架在 C# 中创建注销

使用实体框架将数据导入和导出到Excel for ASP.NET MVC

ASP.NET 5 MVC 6中没有实体框架的身份验证和授权

ASP.NET MVC5实体框架6 get bool = true和bool = false LINQ

将实体框架,ASP.NET MVC核心和PostgreSQL与Heroku一起使用