我有一堆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