【问题标题】:EF Query with multiple contexts具有多个上下文的 EF 查询
【发布时间】:2012-05-05 07:56:02
【问题描述】:

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

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

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

【问题讨论】:

  • 你不同的上下文是否与不同的数据库相关联?
  • 是的,它们与单独的数据库相关。

标签: c# entity-framework-4


【解决方案1】:

This可能对你有帮助。

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

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

【讨论】:

  • 您的链接好像没有通过。
【解决方案2】:

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;

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    相关资源
    最近更新 更多