gpt4 book ai didi

c# - 异步/等待 Entity Framework ObjectContext 处置

转载 作者:行者123 更新时间:2023-11-30 17:40:06 25 4
gpt4 key购买 nike

我遇到了以下错误:

A first chance exception of type 'System.ObjectDisposedException' occurred in EntityFramework.dll

Additional information: The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.

我在尝试使用 EF 6 访问表时遇到该错误。我已将该方法设置为异步并等待返回值,但它仍然给我处理错误。

 public async Task<List<Ticket>> GetAllOpenTwoTicketsAsync() {

using (AssetTrackingEntitiesObj _edmObj = new AssetTrackingEntitiesObj()) {
_edmObj.FullObjectContext.Connection.Open();
return await _edmObj.Tickets
.Where(t => t.TicketStatusType.isOpenTicket)
.Include(t => t.AssetTickets)
.Select(t => t).ToListAsync();
}


}

这是调用票证的方法

 TicketsCollection = new ObservableCollection<Ticket>(await _ticketRepository.GetAllOpenTwoTicketsAsync());

我做得对吗?我存储库中的每个方法都使用 using 语句,创建自己的 objectcontext,打开自己的连接,然后做任何它需要做的事情,这是使用 EF6 进行多重异步的正确方式吗?提前致谢。

最佳答案

    不需要
  1. _edmObj.FullObjectContext.Connection.Open();。 using 语句负责打开和处理上下文。这是使用它们而不是自己打开/关闭/处置资源的主要原因。

  2. .Select(t => t) 是完全没有必要的。只需调用 ToListAsync() 即可。

您的其余代码看起来没问题,因此它可能是导致错误的第一条语句。另一个原因可能是您尝试访问未包含的导航属性,延迟加载在处理上下文时不起作用。

关于c# - 异步/等待 Entity Framework ObjectContext 处置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com