Я работаю над winRT и сущностью (для SQL), слой, который обменивается данными между ними, - это служба WCF. В рамках сущности я использую Repository Pattern и у меня есть метод:C# Как сериализовать system.linq.expressions?
public IQueryable<User> GetBySearch(Expression<Func<User, bool>> search)
{
return this.Context.Users.Where(search);
}
Все отлично работает, но когда я добавляю его в WCF
[OperationContract]
IQueryable<User> GetUserBySearch(Expression<Func<User, bool>> search);
и:
public IQueryable<User> GetUserBySearch(Expression<Func<User, bool>> search)
{
IUser user = new UserRepository();
return user.GetBySearch(search);
}
Но проблема в том, что выражение не является сериализуемым, поэтому WCF не может его сериализовать. Поэтому я решил унаследовать его и сделать его [Serializable], но проблема в том, что это запечатанный класс.
Может кто-нибудь помочь мне решить эту проблему?
Смотрите, например http://stackoverflow.com/questions/4291370/expose-iqueryable-over-wcf-service – xanatos
Если вы действительно хотите, может быть, вы могли бы http://stackoverflow.com/questions/ 7183199/serializing-iqueryableof-t – xanatos
Используйте службы передачи данных WCF. – leppie