Chu*_*way 10 c# linq-to-entities
我收到以下错误:
无法创建类型为"Phoenix.Intranet.Web.ClientSettings.ComponentRole"的常量值.在此上下文中仅支持原始类型(例如Int32,String和Guid').
我理解为什么会出错.我不明白的是我的代码创建错误的原因.我的比较是针对原始类型的.所有的比较都是Guid to Guid.该错误明确指出Guids是可以的.
此行发生错误(朝向底部):
var vla = (from cir in phoenixEntities.ComponentInRoles
Run Code Online (Sandbox Code Playgroud)
码:
List<ComponentRole> roles;
using (IMSMembershipEntities entities = new IMSMembershipEntities())
{
roles = (from role1 in entities.Roles
select new ComponentRole{Name = role1.RoleName, RoleId = role1.RoleId} ).ToList();
}
List<Components> componentInRoles;
using (PhoenixEntities phoenixEntities = new PhoenixEntities())
{
phoenixEntities.ContextOptions.LazyLoadingEnabled = false;
componentInRoles = (from component in phoenixEntities.Components
select new Components{Name = component.Name,
ComponentId = component.ComponentId,
//InRoles = (from componentInRole in phoenixEntities.ComponentInRoles
// join role in roles on componentInRole.RoleId equals role.RoleId
// where componentInRole.ComponentId == component.ComponentId
// select new ComponentRole{RoleId = role.RoleId, Name = role.Name})
}
).ToList();
foreach (Components cmpent in componentInRoles)
{
Components cmpent1 = cmpent;
//cmpent.InRoles =
var vla = (from cir in phoenixEntities.ComponentInRoles
join role in roles on cir.RoleId equals role.RoleId
where cir.ComponentId == cmpent1.ComponentId
select role).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
Maz*_*eri 18
EntityFramework和Linq to SQL都试图将一部分在内存中而另一部分在数据库中的查询转换为sql IN
运算符.
并且因为您的类哪个角色是IEnumerable而不是原始类型,所以它无法转换为SQL查询.
您应首先从数据库获取到内存,然后在内存中加入两个列表.
例如:
var vla = (from cir in phoenixEntities.ComponentInRoles.ToList()
join role in roles on cir.RoleId equals role.RoleId
where cir.ComponentId == cmpent1.ComponentId
select role).ToList();
Run Code Online (Sandbox Code Playgroud)
我希望我帮忙
归档时间: |
|
查看次数: |
12179 次 |
最近记录: |