如何序列化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],但问题是它是一个密封类。

如何序列化System.Linq.Expressions

这根本没有意义。事实上,您试图在WCF服务上的WinRT客户端代码中执行一个函数。这怎么行?我认为您必须定义自己的查询语言,该语言将被翻译为服务上的表达式。