根据我的经验,.NET的主要对象关系管理框架(NHibernate、LinqToSql、Entity Framework)在跟踪加载的对象时工作得最好。这对于简单的客户端-服务器应用程序工作得很好,但是当在面向服务的体系结构中使用带有Web服务的三层或更多层体系结构时,这是不可能的。最终,通过自己编写大量代码来进行跟踪,可以做到这一点,但是ORM不是应该简化数据库访问吗?
在面向服务的架构中使用ORM的想法好吗?
发布于 2009-01-05 11:47:48
LLBLGen Pro在实体内部具有更改跟踪功能。这意味着您可以使用预取路径(即每个图形节点一个查询)从数据库中获取一个图形,并通过线路将其序列化到客户端,在那里更改它,将其发送回去,然后直接保存该图形,因为所有更改跟踪都在实体内(并且在XML中作为紧凑的自定义元素进行序列化)。
免责声明:我是llblgen pro的首席开发者。
发布于 2009-01-08 04:05:21
这取决于你所说的“SOA”是什么意思。在服务契约中公开领域对象很少是好的服务设计--它公开了内部实现细节,对已发布的契约进行更改的可能性更大,而且版本控制变得非常困难。
如果您为您的服务端点创建自定义消息文档(例如WCF ),则使用DataContracts实现服务相对容易。通常,您将从数据库重新加载域对象并映射更改的属性(或调用方法),然后持久化更改。
如果您的服务主要是CRUD方法,那么您的自定义消息实际上就是DTO。您将需要手动管理开放式并发和域对象映射。
更新:这是一个旧的答案,所以我想指出EF4现在也是includes change tracking in entities。我仍然认为这是一个糟糕的服务契约设计,但如果您只是想要一个分布式应用程序框架,这可能是一个不错的选择。
发布于 2009-07-03 20:36:41
看一下DataObjects.Net中对upcoming synchronization and disconnected sets的描述
https://stackoverflow.com/questions/412660
复制相似问题