我是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
}
提前致谢。
答案 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)
我希望它可以帮助某人