首页 > 解决方案 > 不同 DbContext 之间的一对多

问题描述

有两个实体:用户(帖子的作者)和帖子

public class ApplicationUser : IdentityUser<int>
{
    public virtual IEnumerable<Post> Posts { get; set; }
}

public class Post
{
    public int Id { get; set; }
    public int AuthorId { get; set; }
    public virtual ApplicationUser Author { get; set; }
}

和他们的两个 DbContext

public class AppIdentityContext : IdentityDbContext<ApplicationUser, IdentityRole<int>, int>
{
    public AppIdentityContext(DbContextOptions<AppIdentityContext> options) : base(options) { }
}

public class ForumContext : DbContext
{
    public ForumContext(DbContextOptions<ForumContext> options) : base(options) { }

    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        builder.Entity<Post>(ConfigurePost);
    }

    private void ConfigurePost(EntityTypeBuilder<Post> builder)
    {
        // Author is ApplicationUser from AppIdentityContext
        // As far as I know, this won't work
        builder.HasOne(p => p.Author)
            .WithMany(u => u.Posts)
            .HasForeignKey(p => p.AuthorId);
    }
}

在这种情况下,我可以以某种方式Post.Author使用 EF Core 配置字段的自动填充吗?

PS我找到了这个(似乎是解决方案),但我不明白。
https://github.com/aspnet/EntityFrameworkCore/issues/4595#issuecomment-189534388

标签: c#entity-frameworkasp.net-identityentity-framework-core

解决方案


推荐阅读