我与我的EF6 asp.net的MVC 5 Web应用程序内的下列异步方法: -不能等待“长”
public async Task<Resource> GetResourceByName(string resourcename)
{
return await entities.Resources.SingleOrDefaultAsync(a => a.RESOURCENAME.ToLower() == resourcename.ToLower());
}
现在我试图让该ID用于从上述方法如下所述返回的对象: -
var temp = await GetResourceByName(FQDN).Result.RESOURCEID;
但是这将提高以下错误: -
Error 1 Cannot await 'long'
现在要解决这个我做了以下几点: -
var temp = await GetResourceByName(FQDN);
id = temp.RESOURCEID;
所以不知道为什么我的第一个apporach没有工作。现在我等待任务,当它完成时,我将检索.Result并获取ResourceID ...为什么这不起作用?
这里是资源模型: -
public partial class Resource
{
public long RESOURCEID { get; set; }
public string RESOURCENAME { get; set; }
public Nullable<long> ACQUISITIONDATE { get; set; }
public Nullable<long> WARRANTYEXPIRY { get; set; }
public Nullable<long> EXPIRYDATE { get; set; }
public long COMPONENTID { get; set; }
public string ASSETTAG { get; set; }
public string SERIALNO { get; set; }
public string BARCODE { get; set; }
public Nullable<long> PURCHASELOTID { get; set; }
public Nullable<long> VENDORID { get; set; }
public long RESOURCESTATEID { get; set; }
public Nullable<long> SITEID { get; set; }
public Nullable<long> CIID { get; set; }
public bool ISDEPRECIATIONCONFIGURED { get; set; }
public bool ISDEPRECIATIONCALCULATED { get; set; }
public bool ISPERSONAL { get; set; }
public virtual ComponentDefinition ComponentDefinition { get; set; }
public virtual ResourceLocation ResourceLocation { get; set; }
public virtual ResourceState ResourceState { get; set; }
public virtual SiteDefinition SiteDefinition { get; set; }
}
感谢您的回复,但正在写入以下正确的“it360id = GetResourceByName(FQDN).Result.RESOURCEID”???或者最好写下“var temp =(await GetResourceByName(FQDN))。RESOURCEID;”如你所说? –
@johnG:不,你不应该使用'Result'。改用'await'。 –
但为什么我应该使用await而不是Result?第二个问题是我在temp变量中存储调用的一种好方法: - “var temp = await GetResourceByName(FQDN); id = temp.RESOURCEID;” –