我有一堆Linq to Entity方法具有相同的select语句,所以我认为我会聪明并将它分离出来以减少冗余的自己的方法...但是当我试图运行代码时,我得到了下面的错误......什么导致Linq错误:这种方法不能被转换成商店表达式?
this method cannot be translated into a store expression
这里是我创建的方法...
public User GetUser(DbUser user, long uid)
{
return new User
{
Uid = user.uid,
FirstName = user.first_name,
LastName = user.last_name
};
}
而且我打电话在这样的方法......
public User GetUser(long uid)
{
using (var entities = new myEntities()) {
return
entities.DbUsers.Where(x => x.uid == uid && x.account_status == (short)AccountStatus.Active).
Select(x => GetUser(x, uid)).FirstOrDefault();
}
}
更新:这里是工作的直列
public User GetUser(long uid, long uid_user)
{
using (var entities = new myEntities())
{
var q = from u in entities.DbUsers
where u.uid == uid_user
select new User
{
Uid = u.uid,
FirstName = u.first_name,
LastName = u.last_name,
BigPicUrl = u.pic_big,
Birthday = u.birthday,
SmallPicUrl = u.pic_small,
SquarePicUrl = u.pic_square,
Locale = u.locale.Trim(),
IsFavorite = u.FavoriteFriends1.Any(x => x.uid == uid),
FavoriteFriendCount = u.FavoriteFriends.Count,
LastWishlistUpdate = u.WishListItems.OrderByDescending(x => x.added).FirstOrDefault().added,
Sex = (UserSex)u.sex
};
var user = q.FirstOrDefault();
user.DaysUntilBirthday = user.Birthday.DaysUntilBirthday();
return user;
}
}
我试过这种技术,但仍然失败 – 2010-09-21 04:57:54
为什么你有DbUser和用户呢? EF的实体是否应该成为你的域名实体?它看起来像User是DbUser的一个虚拟版本,为什么不只是在DBUsers上运行? – 2010-09-21 05:11:18
我猜DbUser是EF POCO,用户是他的自定义业务对象。不过,我更喜欢直接映射到我的自定义POCO。离开中间人。 – RPM1984 2010-09-21 05:13:26