[英]EF Query with multiple contexts
我有两个 EF 上下文 _inventoryContext 和 _auctionContext。
_inventoryContext 有一个名为 Items 的属性,_auctionContext 有一个名为 Auctions 的属性。 Items 是 Item 对象的集合,每个对象都包含一个 Guid 以唯一标识它们。 Auctions 属性是 Auction 对象的集合,每个对象都包含一个 Guid InventoryReference,它指的是 Items 的元素之一。
我想要做的是获取不属于拍卖的所有库存物品的列表。 我该怎么做呢?
这可能对你有帮助。
或者,您可以通过 2 个步骤完成此操作:首先从您的 Auction 中获取 GuidReferences 的集合,然后获取其 Guid 包含在该集合中的项目。 由于额外的查询以及框架需要分配 Guid 集合,性能会受到影响。 但是根据 Item 集合的大小,这对您来说可能不是什么大问题。
另一种可能性是在一个数据库/上下文中创建一个视图,从另一个数据库/上下文中提取数据。 但是,这将是只读的。
EF Core 中有更好的解决方案
您可以在上下文中创建名为 Auctions 的视图,并在代码中映射 DbSet 模型。 所以你可以在另一个上下文中使用其他上下文模型和表。 但是您必须确保您的 db 用户可以访问这两个上下文。 例如在 _inventoryContext 中,您可以这样定义。
public virtual DbSet<Auction> Auctions { get; set; }
modelBuilder.Entity<Auction>(entity =>
{
entity.ToView("vwAuctions");
}
它为您提供了类似的东西
var result= from x in _inventoryContext.InventoryReference
join y in _inventoryContext.Auctions on x.Id equals y.InvRef
select x;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.