实体框架核心:“读取器关闭时无效尝试调用ReadAsync”

时间:2017-10-08 04:57:46

标签: entity-framework triggers entity-framework-core

我是Entity框架核心的新手,我正在做一个简单的短项目。在我的项目中,我使用触发器。但是当我删除多个项目时,触发器会显示错误: "读取器关闭时无效尝试调用ReadAsync“。

我谷歌很多,但能够在这种情况下找到任何解决方案。 我该如何解决这个问题?

以下是我的代码:

 Triggers<Items>.Deleted += async e => {
       decimal convertedQuantity = e.Entity.MeasurementUnitSetup.ConversionRatio * e.Entity.IssuedQuantity;
       var warehouseItem = e.Context.Entry(e.Entity.Warehouse).Collection(o => o.WarehouseItems)
                      .Query()
                      .SingleOrDefault(wi => wi.WarehouseId == e.Entity.WarehouseId && wi.MeasurementUnitSetup.ItemId == e.Entity.MeasurementUnitSetup.ItemId);

    if (warehouseItem.Quantity - convertedQuantity >= 0)
          warehouseItem.Quantity -= convertedQuantity;

    await e.Context.SaveChangesAsync(); //From here error showing
   }

提前致谢。

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,因为我在函数中错误地返回了“ void”:-

公共异步虚空OnGet()

然后我将“ void”替换为“ Task”

公共异步任务OnGet()

答案 1 :(得分:0)

对于那些也在寻找答案的人:就我而言,是

from jmespath import functions
import time

class CustomFunctions(functions.Functions):

    # the function name should always have a prefix of _func_ for it to be considered
    @functions.signature({'types': ['string']}, {'types': ['number']})
    def _func_hasTimeThresholdCrossed(self, jobdate, difference):
        jobdate = time.strptime(jobdate,'%Y-%m-%dT%H:%M:%S.%fZ')
        return time.time() - time.mktime(jobdate) > difference

options = jmespath.Options(custom_functions=CustomFunctions())

jmespath.search("hasTimeThresholdCrossed(createdAt,`1000000`)",{"createdAt":"2019-03-22T10:49:17.342Z"},options=options)

我希望它可以帮助某人