下面是該查詢:EF6異步包含的實體屬性爲空?
using (var _context = GetCommonDataContext())
{
return await _context.AnswerSelectListEntries
.Include(asle => asle.Optional)
.OrderBy(asle => asle.DisplayOrder)
.Select(asle => new AnswerSelectListEntryDTO()
{
Id = asle.Id,
AnswerSelectListId = asle.AnswerSelectListId,
ShortAnswer = asle.ShortAnswer,
LongAnswer = asle.LongAnswer,
CounterpartyGroupId = asle.CounterpartyGroupId,
Optional = new AnswerDefDTO()
{
Id = asle.Optional.Id,
Name = asle.Optional.Name,
AnswerType = asle.Optional.AnswerType,
MultiplierAnswerType = asle.Optional.MultiplierAnswerType,
IntRangeLow = asle.Optional.IntRangeLow,
IntRangeHigh = asle.Optional.IntRangeHigh,
AnswerSelectListId = asle.Optional.AnswerSelectListId
},
AnswerDefId = asle.AnswerDefId,
PartyType = asle.PartyType,
DisplayOrder = asle.DisplayOrder
}).ToListAsync();
}
我得到一個錯誤(從子查詢拋出),其標識,以及AnswerType(這是一個枚舉),不能強制他們同行(int和枚舉),因爲它們是空值。問題是它們是不可空的(並且在數據庫中不爲空)。不知何故,asle.Optional的屬性被設置爲null(儘管它們是不可空的)。我猜這與異步有關,但不知道是什麼。
使用固定:
Optional = asle.Optional == null ? null : new AnswerDefDTO()...
您認爲它與異步有什麼關係?這是一個查詢 - 在運行時它會被翻譯成什麼樣的SQL查詢?是否需要'AnswerSelectListEntries'具有'Optional'?什麼是確切的例外? – peter
@peter我不知道它與可選項有關。我只是猜測。 AnswerSelectListEntry.optional不是必需的,它有時是空的。期望是當填充AnswerSelectListEntry.optional時,AnswerSelectListEntryDTO.Optional也將被填充。 – pQuestions123
是的,所以我到目前爲止還沒有EF6的專家知道什麼時候會拋出什麼異常,但是我認爲你正在對待'asle.Optional',好像它永遠不會爲空。 **可能會成爲錯誤的根源。但是,因爲我永遠不會做這樣的事情,我從來沒有處理過這個問題「當我訪問一個實際爲空的包含表的屬性時會發生什麼?」 - 您解釋異常的方式也可能有偏差,這就是原始異常可能有所幫助的原因。 – peter