我正在研究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]
,但问题是它是一个密封的类。
答案 0 :(得分:1)
这根本没有任何意义。实际上,您尝试在WCF服务上的WinRT客户端代码中执行func。那工作怎么样?我认为您必须定义自己的查询语言,该语言将转换为服务上的表达式。