حل خطای A second operation was started در Entity Framework

mohsen2 ماه قبل2 ماه قبل
ارسال شده در
mohsen

اگر در زمان استفاده از Entity Framework با خطای زیر مواجه شدید:

      System.InvalidOperationException: A second operation was started on this context instance before a previous operation completed. This is usually caused by different threads concurrently using the same instance of DbContext. For more information on how to avoid threading issues with DbContext, see https://go.microsoft.com/fwlink/?linkid=2097913.
    

بدلیل اجرای همزمان دو یا چند درخواست بوسیله یک نمونه از DbContext است که انتیتی فریم ورک از آن پشتیبانی نمی کند.

اگر برنامه شما به صورت چند نخی اجرا می شود، باید در هر نخ از نمونه مجزایی از DbContext استفاده کنید.

و همیشه مراقب باشید که از await برای عملیات های دیتابیس استفاده کنید:

      var station = dbContext.Stations.FirstOrDefaultAsync(t => t.Id == request.StationId && t.ShopId == request.ShopId);
....
await dbContext.StationTokens.AddAsync(accessToken);
await dbContext.SaveChangesAsync();
    

برای مثال کد بالا با خطا مواجه خواهد شد. زیر در اولین فراخوانی از await استفاده نشده است و در ادامه درخواست دیگری به دیتابیس ارسال می شود.

رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!