如何序列化System.Linq.Expressions
本文关键字:Linq Expressions System 序列化 | 更新日期: 2023-09-27 18:27:11
我正在研究WinRT和实体框架(到SQL),它们之间的通信层是WCF服务。
在实体框架中,我使用的是Repository模式,我有一种方法:
public IQueryable<User> GetBySearch(Expression<Func<User, bool>> search)
{
return this.Context.Users.Where(search);
}
一切都很好,但当我将其添加到WCF 时
[OperationContract]
IQueryable<User> GetEventBySearch(Expression<Func<User, bool>> search);
和:
public IQueryable<User> GetEventBySearch(Expression<Func<User, bool>> search)
{
IUser user = new UserRepository();
return user.GetBySearch(search);
}
但是Expression<TDelegate>
不可串行化的问题,WCF无法对其进行串行化
所以我想继承它并使它成为[Serializable]
,但问题是它是一个密封类。
这根本没有意义。事实上,您试图在WCF服务上的WinRT客户端代码中执行一个函数。这怎么行?我认为您必须定义自己的查询语言,该语言将被翻译为服务上的表达式。