在我的WPF应用程序中,当用户在datagrid中选择一行时,我调用viewModel中应该异步获取某些数据的方法:
private async void LoadAdditionalInfoForItem(int itemId, int? supplierId)
{
try
{
var result = await unitOfWork.ItemRepository.GetReplacementsByOEMAsync(langId, itemId);
// Got an error here with no details, just _COMPlusExceptionCode -532462766
}
catch (Exception)
{
}
}
在ItemRepository类中:
public Task<ObservableCollection<GetItemListProcedureResult>> GetReplacementsByOEMAsync(int langId, int itemId)
{
return _context.GetReplacementsByOEMProcedure(langId, itemId).ToObservableCollectionAsync();
}
和扩展方法:
public static Task<ObservableCollection<T>> ToObservableCollectionAsync<T>(this IEnumerable<T> col)
{
return Task<ObservableCollection<T>>.Factory.StartNew(() => new ObservableCollection<T>(col));
}
我在同一方法中以相同的方式(使用另一个SP)获得另一个数据异步,并且没关系。我检查了存储过程GetReplacementsByOEMProcedure,它返回了正确的数据。
那么,也许有人遇到同样的问题?我不知道如何解决它。
答案 0 :(得分:0)
问题是两个SP返回同一类返回的集合。当我更改第一个SP时,我没有更改第二个SP,因此在第二个SP(GetReplacementsByOEMProcedure)中,列名未映射到返回类的字段。