【发布时间】:2013-07-16 16:28:50
【问题描述】:
使用 nhibernate 作为 ORM
试图获得一个实体
var users = GetUsersData(repository);
return users.Where(f => f.Id == id).FirstOrDefault();//there is an exception
例外:
“System.Linq.EnumerableQuery
1[Entity]' cannot be converted to type 'System.Linq.IQueryable1[System.Object[]]”类型的对象。
但是当我这样做时:
var users = GetUsersData(repository);
return users.Where(f => f.Id == id).ToArray().FirstOrDefault();
它运行良好。 指点我,怎么了?
在GetUsersData 我愿意:
private static IQueryable<User> GetUsersData(IUserRepository repository)
{
return repo.GetAll().Select(user => new User
{
Id = user.Id,
Phones = user.Phones.Select(s => new Phone() { Number = s.Number }),
...
}).AsQueryable();
【问题讨论】:
-
.AsQueryable()可能是问题所在。另外为什么选择用户进入另一个用户?repo.GetAll().Where(f => f.Id == id).FirstOrDefault();应该够了吧? -
.AsQueryable() might be the problem.是。多谢。但我不明白这个问题
标签: c# linq nhibernate orm fluent-nhibernate