我已经进行了大量的搜索超过2周,但找不到答案。 堆栈溢出中存在大量场景......但没有一个给出正确的答案。
那么,简单来说,存储过程/ EF6中的函数导入是异步的吗?
我尝试过Stack Overflow的几个解决方案。但只能解决我项目的一部分。
我的数据层是数据库优先。 95%的数据库调用来自存储过程。
例如 1.
public async void TrackPageVisits(int? WebsiteId, int? VisitID, int? CurrentPageId, int? FromPageId)
{
using (var ovc = new OVCSEntities())
{
await ovc.Visit_TrackPageVisit(WebsiteId, VisitID, CurrentPageId, FromPageId);
}
}
这最终会告诉我int不包含'GetAwaiter'.........
2.我将其转换为
public async void TrackPageVisit(int? WebsiteId, int? VisitID, int? CurrentPageId, int? FromPageId)
{
using (var ovc = new OVCSEntities())
{
await Task.Run(() => ovc.Visit_TrackPageVisit(WebsiteId, VisitID, CurrentPageId, FromPageId));
}
}
但这只适用于无效或简单数据返回
如下所示返回记录集时会变得复杂
public async Task<ProductProfileByCountry> GetProductProfileDetail(int WebsiteVersion, int Position, int CountryId, int SalesType)
{
using (var ovcs = new OVCSEntities())
{
ProductProfileDetails productDetails = await ovcs.ProductProfile_GetSelectedProductProfileDetails(WebsiteVersion, Position, CountryId, SalesType).FirstOrDefault();
return new ProductProfileByCountry()
{
DisplayName = productDetails.DisplayText,
CurrencySymbol = productDetails.CurrencySymbol,
PictureUrl = productDetails.PictureURL,
Save = productDetails.SavePrice != null ? (decimal)productDetails.SavePrice : 0,
ProductPrice = productDetails.ProductPrice != null ? (decimal)productDetails.ProductPrice : 0
};
}
}
这里,ProductProfileByCountry是一个函数导入结果集。它说 ProductProfileByCountry没有GetAwaiter ........
所以,基本上,我找不到使用任务异步模式(TAP)处理复杂存储过程的方法。
我在网上找到的是从表中进行的简单数据库调用。
我是否有必要使用TAP进行存储过程调用? 如果是,怎么样?
感谢您的帮助。