问题:
- 具有仅存储过程任务的 DBA 控制的数据库。
- 期望在 POCO 中定义域。
所以我决定我需要一个为存储过程和/或遗留数据库设计的 ORM。
理想情况下,ORM 应该允许我以声明方式(或流畅地)将域对象映射到 CRUD 存储过程。
迄今为止的一些发现:
- 如果我可以控制为延迟加载生成的查询,NHibernate就可以工作。
- iBATIS.NET可以完美运行,但我找不到以下示例:
- 对象状态跟踪(新/更新/删除/等)
- 父/子提交事务(如果父被更新,也更新所有脏子对象)。
- 与我们的数据库约定一起使用的内部开发的ORM是一种选择,我们已经开始使用它。但我想确保我们别无选择。
非选项:
- SubSonic确实包装了存储的过程,但它不会在过程和实体之间映射。如果需要的话,我可以实现某种映射器,但还有其他因素也影响 SubSonic,例如缺乏 VS2005(或 SharpDevelop)支持以及将数据访问与域对象混合。
- 删除 SProcs不是一种选择。数据完整性是 DBA 和上级人员非常关心的问题,他们觉得使用 SProcs 是最安全的。这不是我说服他们的地方。
有谁知道适合我需要的 ORM,或者有一种方法可以克服不适合我 100% 需要的 ORM 中的限制?
欢迎任何建议!