我有以下错误:
LINQ to Entities无法识别方法'System.Guid GetIdAuthenticatedUser()'方法,并且此方法无法转换为商店表达式。
当我运行此代码时会发生这种情况:
...
if (_context.Voice.Any(u => u.VoiceUserId == _repository.GetIdAuthenticatedUser())) //error here
{
Response.Redirect("MainPage.aspx");
}
...
方法GetIdAuthenticatedUser()
返回经过身份验证的用户的ID:
public Guid GetIdAuthenticatedUser()
{
MembershipUser user = Membership.GetUser();
var a = user.ProviderUserKey;
var userid = new Guid(a.ToString());
return userid;
}
u.VoiceUserId
的类型为Guid
需要做些什么来使其发挥作用?
答案 0 :(得分:2)
只需将对函数的调用移至linq查询外部
即可var id = _repository.GetIdAuthenticatedUser();
if (_context.Voice.Any(u => u.VoiceUserId == id))
{
Response.Redirect("MainPage.aspx");
}
问题在于,就像错误所说的那样,方法GetIdAuthenticatedUser()不是linq的一部分,所以当linq试图为DB生成查询时,它不知道如何将方法调用转换为sql