1

我有两个 EF 上下文 _inventoryContext 和 _auctionContext。

_inventoryContext 有一个名为 Items 的属性,而 _auctionContext 有一个名为 Auctions 的属性。Items 是 Item 对象的集合,每个对象都包含一个用于唯一标识它们的 Guid。Auctions 属性是 Auction 对象的集合,每个对象都包含一个 Guid InventoryReference,它引用 Items 的元素之一。

我想要做的是获取不属于拍卖的所有库存物品的清单。我该怎么做呢?

4

2 回答 2

1

可能对你有帮助。

或者,您可以分两步执行此操作:首先从您的拍卖中获取 GuidReferences 集合,然后获取其 Guid 包含在集合中的项目。由于额外的查询以及框架需要分配 Guid 集合,性能会受到影响。但根据 Item 集合的大小,这对您来说可能没什么大不了的。

另一种可能性是在一个数据库/上下文中创建一个视图,从另一个数据库/上下文中提取数据。但是,这将是只读的。

于 2012-04-24T16:46:33.717 回答
1

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;
于 2021-10-14T10:39:07.273 回答