entity-framework - 在多个 DbContext 中使用相同的实体(EF Core 2)
问题描述
我在一个项目中有两个 DbContext (EFCore 2),它们共享同一个实体。我的问题是 EFCore 为该实体创建了两个表。
每个 DbContext 都有自己的架构。事实上,我想创建一个多域(和多 DbContext)应用程序,但一个 DbContext 中的实体是共享的,其他 DbContext 引用这些实体。
上下文:
public class CommonContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("common");
}
public DbSet<DomainModel.Common.User> Users { get; set; }
}
public class App1DbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("app1");
}
public DbSet<DomainModel.App1.Book> Books { get; set; }
}
楷模:
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Book
{
public string Title { get; set; }
public User Author { get; set; }
}
我首先使用迁移创建了通用模式:
add-migration -context CommonContext
update-database -context CommonContext
然后,我创建了 app1 架构:
add-migration -context app1
update-database -context app1
但是 EF 在两种模式中都创建了“用户”表!EF 不明白这两个独立的 DbContext 共享同一个实体(用户)。我希望 EF 仅在通用模式(CommonContext)中创建用户表。
我该如何解决这个问题?
解决方案
推荐阅读
- python - 绘制 kdeplot 的不常见部分
- python - 在用户输入特定输入后,我如何循环并结束程序,
- android - Android Emulator Pixel XL api 28 系统 Image x86 http://10.0.2.2:8080 404 错误
- javascript - 从 ajax 响应返回的选择器上的事件委托
- rtp - 从原始 rtp 数据包创建可播放文件
- ios - Podfile 包含框架或静态库目标,Podfile 不包含主机目标
- eclipse - 每次我重新启动 Eclipse 时,Eclipse 服务器运行时都会重新发布
- php - laravel mysql 8 连接超时
- c# - Collider2d 和鼠标拖动
- jquery - 将小数点放在从右到左键按下事件的第 2 位之后