2012-02-06 65 views
1

我想在C#2010中编写一个OData服务,通过JSON公开一些POCO到jQuery Web客户端,但也允许更新底层数据。我通过OData发现了很多只读POCO数据的例子,以及许多通过Entity Framework和OData更新数据的例子。通过OData/WCF数据服务基础POCO数据的CRUD操作

我的问题是,数据是在专有数据库中,所以需要有一个业务逻辑层来处理数据库更新,我没有看到这适合OData/WCF数据服务模型。我使用IQueryable列表填充POCO实体并使用SetEntitySetAccessRule公开它们,但是如何在业务逻辑/数据模型层调用一个方法来将数据保存到数据库?

我应该使用SetServiceOperationAccessRule来公开服务方法吗?如果是这样,请有人指点我一个简单的例子的方向吗?

感谢

回答

1

我的建议是一个自定义WCF数据服务提供商,这样就可以有IDataServiceUpdateProvider的自定义实现。有一个很好的博客系列http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx

+0

感谢您的回应,作为一名非常新的人,它看起来像很多工作要实施。我会更好地废除OData方法并实施SOAP服务吗?这样我可以公开POCO中的CRUD功能并从jQuery中调用它? – SockBiscuit 2012-02-07 08:58:25

0

Rich建议实施IUpdatable/IDataServiceUpdateProvider是正确的。这是支持更新操作的方式(EF提供者实现了这个收件箱,反射提供者不需要你自己去做)。 即使使用反射提供程序,也可以实现IUpdatable。只要让你的上下文类(你传递给DataService的T)实现IUpdatable接口。

+0

因此,对于我的上下文类,已经有'public IQueryable Products'属性,我只需创建另一个属性,例如'public IUpdatable UpdateProduct',我可以使用HTTP PUT调用? – SockBiscuit 2012-02-07 09:17:28

+0

上下文类本身必须实现接口: – 2012-02-07 09:21:59

+0

(对不起),比如“class MyContext:IUpdatable {...}”,并且实现接口定义的所有方法/属性。 – 2012-02-07 09:22:33

相关问题