2

问题:

  1. 具有仅存储过程任务的 DBA 控制的数据库。
  2. 期望在 POCO 中定义域。

所以我决定我需要一个为存储过程和/或遗留数据库设计的 ORM。

理想情况下,ORM 应该允许我以声明方式(或流畅地)将域对象映射到 CRUD 存储过程。

迄今为止的一些发现:

  1. 如果我可以控制为延迟加载生成的查询,NHibernate就可以工作。
  2. iBATIS.NET可以完美运行,但我找不到以下示例:
    1. 对象状态跟踪(新/更新/删除/等)
    2. 父/子提交事务(如果父被更新,也更新所有脏子对象)。
  3. 与我们的数据库约定一起使用的内部开发的ORM是一种选择,我们已经开始使用它。但我想确保我们别无选择。

非选项:

  1. SubSonic确实包装了存储的过程,但它不会在过程和实体之间映射。如果需要的话,我可以实现某种映射器,但还有其他因素也影响 SubSonic,例如缺乏 VS2005(或 SharpDevelop)支持以及将数据访问与域对象混合。
  2. 删除 SProcs不是一种选择。数据完整性是 DBA 和上级人员非常关心的问题,他们觉得使用 SProcs 是最安全的。这不是我说服他们的地方。

有谁知道适合我需要的 ORM,或者有一种方法可以克服不适合我 100% 需要的 ORM 中的限制

欢迎任何建议!

4

1 回答 1

0

我认为 NHibernate 是你最好的选择。

您可以使用 loader、sql-insert、sql-delete、sql-update 元素来为实体和延迟加载集合配置存储过程,尽管这意味着相当多的击键。

于 2011-08-26T14:43:34.507 回答