我使用NHibernate,XPO,SubSonic,DataObject.net。但是你知道所有这些ORM都需要在编程块中打开和关闭Session, 在软件工程方面,使用业务逻辑层和UI层中的数据库会话不是正确的方式。所以我要将我的ORM改为我的应用程序的每一部分中不需要Session或unitofwork的东西。
你有什么建议吗?另外,我试过EF4 POCO,但它有一些问题,我找不到论坛/支持中心来问我的问题了!
问题是我认为在UI和Logic的上层,我不应该将我的代码包含在会话创建和处理中。我希望ORM透明地工作。特别是XPO迫使我在UI表单中大量使用会话!我不认为它是正确的方式
答案 0 :(得分:0)
事实是,几乎每个ORM都依赖于模型和某种数据库会话之间的某种连接。我认为EF4的前沿已经取得了一些进展(我认为他们称之为对象优先实体,但我不确定)。他们的自我跟踪实体是一个开始,但他们依靠序列化或操纵来开始跟踪。
问题是OO实体和关系数据库之间存在“阻抗不匹配”,如果没有认真的工作就无法克服。您几乎可以完全分离您的顾虑,但您会失去效率。你可以非常高效,但你经常意识到你正在处理数据库。
解决方案是没有解决方案,你需要接受这个。尽可能优化和适当地处理它,但忘记了你可以完全抽象出数据库的想法。使用现有技术这是不切实际或不可能的。