有几种方法可以解决这个问题。我可以序列化linq查询,但允许表达式树序列化的OSS项目似乎支持不足。
是否有更传统的方法来执行以下操作:
// Create the DataServiceContext using the service URI.
NorthwindEntities context = new NorthwindEntities(svcUri);
但是没有使用实体生成工具。基本上我想使用类似于以下伪代码的东西 - 注意共享的IRepository合同:
new ChannelFactory<IRepository<MyEntity>>(myBinding, myUri).CreateChannel()
另外,我不想完整地导出DataSet。我只是希望我的常规服务公开IQueryable操作。这样,IQueryable接口可以更强地耦合到业务逻辑,而不是独立的数据服务。
我接受OSS解决方案,但我希望有一些稳定,轻量,活跃,支持良好且经常更新的东西。
答案 0 :(得分:0)
如果要实现存储库模式和大量自定义业务逻辑,Web API可能是您短期内的最佳选择。在我的WCF数据服务优先级列表中获得对这两个问题的更好支持是非常重要的,但事实是我们现在非常缺乏。
Web API的局限性将是OData支持的完整性,这可能会随着时间的推移而增加。 WCF数据服务的局限性在于易于实现业务逻辑插入/软件模式,可能会随着时间的推移而改进。
也就是说,如果你有一个只读服务,那么Reflection提供商几乎可以做你想做的一切。