C# 如何序列化System.Linq.Expressions?
我正在研究WinRT和实体框架(到SQL),它们之间的通信层是WCF服务 在实体框架中,我使用的是存储库模式,我有以下方法:C# 如何序列化System.Linq.Expressions?,c#,linq,wcf,serialization,C#,Linq,Wcf,Serialization,我正在研究WinRT和实体框架(到SQL),它们之间的通信层是WCF服务 在实体框架中,我使用的是存储库模式,我有以下方法: public IQueryable<User> GetBySearch(Expression<Func<User, bool>> search) { return this.Context.Users.Where(search); } public IQueryable GetBySearch(
public IQueryable<User> GetBySearch(Expression<Func<User, bool>> search)
{
return this.Context.Users.Where(search);
}
public IQueryable GetBySearch(表达式搜索)
{
返回this.Context.Users.Where(搜索);
}
一切正常,但当我将其添加到WCF时
[OperationContract]
IQueryable<User> GetEventBySearch(Expression<Func<User, bool>> search);
[运营合同]
IQueryable GetEventBySearch(表达式搜索);
以及:
public IQueryable GetEventBySearch(表达式搜索)
{
IUser user=new UserRepository();
返回user.GetBySearch(搜索);
}
但是,表达式
不可序列化的问题,因此WCF无法序列化它
所以我想从它继承并使它
[Serializable]
,但问题是它是一个密封的类。这根本没有意义。事实上,您试图在WCF服务上的WinRT客户端代码中执行func。那怎么行?我认为您必须定义自己的查询语言,并将其转换为服务上的表达式。。。。你是真的吗?可能是复制品
public IQueryable<User> GetEventBySearch(Expression<Func<User, bool>> search)
{
IUser user = new UserRepository();
return user.GetBySearch(search);
}