2011-03-18 79 views
3

我正在使用用NSericeBus处理的命令和通过只读OData提供的查询来处理CQRS风格的系统。使用NHibernate成功使用WCF数据服务(OData)?

我们希望由NHibernate支持WCF数据服务提要,以便我们可以控制数据在Feed(计算字段等)中的显示方式,实体框架提供商不允许这些数据显示。但是,将反射提供程序与Linq一起使用到NHibernate中时,导航到相关实体时(例如,http://server/feed/Foo(1)/Bar),我们会收到错误。

有没有人提出一个Linq NHibernate支持WCF数据服务工作?

回答

0

你是什么意思,你想做一些实体框架不允许的事情?

如果您需要计算字段,您可以使用计算字段在数据库中定义视图(SQL Server?),并将该视图合并到只读实体模型中。

如果您需要预先计算字段,您可以简单地在您的denormalizer代码中执行此操作。

你需要什么样的情况,你不能用EF做?

+0

Roy,想象一个带有名为'Duration'的列的表格,它对应于C#TimeSpan。它的值作为刻度存储在数据库中(百万分之一秒,不是非常用户友好的)。我想提出一个名为'DurationInMinutes'的专栏,将持续时间转换为分钟。 – 2011-05-24 13:16:52

+0

您可以在View中轻松完成此操作。然后,您的视图将包含像SELECT X,Y,持续时间/(60 * 10 * 1e6)AS DurationInMinutes,Z FROM ...之类的东西,然后您可以像查看真正的表一样查询您的视图。 – 2011-05-24 13:20:18

0

最喜欢你正在寻找的是NHibernate.OData。这可以让你获取传入的odata并让NHibernate自动将其转换为DetachedCriteria实例。

+0

贾斯汀,我试图走另一条路......从NHibernate创建一个oData feed。我不再使用oData或NHibernate(代替RavenDB),而且生活更好! – 2012-05-17 20:21:45