如何序列化System.Linq.Expressions?

时间:2013-08-09 08:31:35

标签: c# linq wcf serialization

我正在研究WinRT和实体框架(对SQL),它们之间进行通信的层是WCF服务。

在实体框架中,我使用的是Repository Pattern,我有方法:

    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],但问题是它是一个密封的类。

1 个答案:

答案 0 :(得分:1)

这根本没有任何意义。实际上,您尝试在WCF服务上的WinRT客户端代码中执行func。那工作怎么样?我认为您必须定义自己的查询语言,该语言将转换为服务上的表达式。