如何从从实体框架模型检索的linq查询中调用方法?
本文关键字:查询 调用 方法 linq 检索 实体 框架 模型 | 更新日期: 2023-09-27 18:08:32
我有以下代码
return (_entities.Users.Select(profile => new ProfileUserListItemDto
{
Email = profile.Email,
FirstName = profile.FirstName,
Id = profile.Id,
LastName = profile.LastName,
Role = DtoEntityLookups.EntityRoleToDtoRole(profile.Role),
TimeZone = profile.TimeZone
})).ToList();
public static RoleTypeEnum EntityRoleToDtoRole(Role role)
{
if (role == null)
throw new NoNullAllowedException("Null role supplied to EntityRoleToDtoRole method");
if (role.Id.ToString() == RolesGuid.AdministratorGuid)
return RoleTypeEnum.Administrator;
if (role.Id.ToString() == RolesGuid.ClientGuid)
return RoleTypeEnum.Client;
throw new InvalidDataException("Unknown role supplied");
}
当调用时,我得到以下错误
LINQ to Entities不识别方法RoleTypeEnum EntityRoleToDtoRole(User.Entities.Entities.Role)'方法,并且该方法不能转换为存储表达式。
我如何将EntityRoleToDtoRole
转换为可从实体框架查询调用?
您需要使用Users.AsEnumerable()来能够调用linq中的方法。
return (_entities.Users.AsEnumerable().Select(profile => new ProfileUserListItemDto
{
Email = profile.Email,
FirstName = profile.FirstName,
Id = profile.Id,
LastName = profile.LastName,
Role = DtoEntityLookups.EntityRoleToDtoRole(profile.Role),
TimeZone = profile.TimeZone
})).ToList();