asp.net-mvc – 错误获取记录“LINQ to Entities无法识别方法”
在以下代码中,我试图获取当前登录用户的配置文件.
Dim userProfile = db1.UserProfiles.Where(Function(p) p.UserId = Membership.GetUser.ProviderUserKey).Single 错误是“LINQ to Entities无法识别方法’System.Object CompareObjectEqual(System.Object,System.Object,Boolean)’方法,并且此方法无法转换为商店表达式.” 有谁知道这有什么问题,还是有更好的方法……而且,我怎样才能使这更安全;即如果没有找到记录则添加条件? 我正在使用VB ASP.NET MVC 3. 谢谢. 编辑: 这是我的新代码: Dim db1 As UserProfileDbContext = New UserProfileDbContext Dim user = Membership.GetUser() Dim key As Guid = user.ProviderUserKey Dim finalKey = key.ToString Dim userProfile = db1.UserProfiles.Where(Function(p) p.UserId = finalKey).Single Dim companyId = userProfile.CompanyId 解决方法
L2E正在尝试将lamba表达式(p)p.UserId = Membership.GetUser.ProviderUserKey呈现给可用于命中数据库的SQL表达式.
但是,Membership.GetUser()是一种.NET方法. L2E抱怨它不知道如何将此方法呈现为SQL语法. 试试这个: Dim user = Membership.GetUser() Dim userProfile = db1.UserProfiles.Where(Function(p) p.UserId = user.ProviderUserKey).Single 编辑:MembershipUser.ProviderUserKey是一个CLR对象. SQL无法比较两个对象,因此您需要在运行表达式之前强类型化它.例如,如果您的用户密钥是字符串: Dim user = Membership.GetUser() Dim key as String= user.ProviderUserKey Dim userProfile = db1.UserProfiles.Where(Function(p) p.UserId = key).Single 这应该更好,因为L2E可以理解简单的相等表达式=并且可以将其呈现为等效的SQL表达式,例如: SELECT * FROM Profiles WHERE UserId = @Argument,其中@Argument由实体框架提供. 另外,L2E会将链式调用分组到最后,所以表达式如下: db1.UserProfiles.Skip(10).Take(30).Where(Function(p)p.UserId = Membership.GetUser.ProviderUserKey) …仍然会失败,因为L2E会将Skip Take和Where组件合并到一个SQL表达式中.您可以通过调用ToArray ToList或ToDictionary强制L2E命中服务器.该表达式可以通过将其更改为: db1.UserProfiles.Skip(10).Take(30).ToArray().Where(Function(p)p.UserId = Membership.GetUser.ProviderUserKey) ToArray强制执行SQL语句,为您提供支持复杂lambas的.NET数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Azure网站上脚本/样式的长时间等待(TTFB)时间
- asp.net-mvc – 返回局部视图的RedirectToAction如何返回完
- asp.net-mvc-4 – 自定义错误在我的MVC 4应用程序中无效
- .net – 使用Model First方法时如何种子数据?
- asp.net – 没有Eval的GridGroupHeaderItem.AggregatesValu
- asp.net-mvc – 是否有针对ASP.NET MVC Production Apps的建
- 如何保持我的ASP.NET应用程序始终“活着”,如果它是一个坏主
- ASP.NET C#将用户添加/更新到角色
- asp.net-mvc-2 – 如何从同一视图更新一对多关系实体?
- OWIN如何挂钩ASP.NET启动