不久前,我们开始开发一个新项目,内部有大约25-30个不同的类/类型/模型,它们通过1:n,n:m或n:1关系彼此密切相关。
当时我们使用原生的.net oodbms系统基本上是因为它允许我们做的是采用我们的对象模型,只是在这里和那里添加一些与持久性相关的方法(-calls),我们已经准备好了。然而,随着时间的推移,我们遇到越来越多的警告,非常糟糕,不可修复(在合理的时间范围内)限制,迫使我们实施缓慢的解决方案,导致平庸的性能和可扩展性问题,并且许可证费用几乎增加了因为我们没有变化(他们被大公司收购)。我们的因素为5。
因此,我们目前开始寻求可扩展性/性能和维护方面的长期解决方案。我们看看其他“真正的”oodbms'并且总是遇到了我们的主要破坏者,因此我们开始看起来更进一步,现在基本上正在考虑ORM,这有希望让我们将大部分注意力集中在我们的对象上与SQL争论。
所以基本上这里是我的问题:有没有人对微软的实体框架或任何其他.NET ORM有任何实际经验,使配置尽可能保持可维护性以及在密切/高度相关的实体中表现良好?我们存储的数据量并不惊人或广泛(我们预计未来3年内所有实体共有100k个实例)。
有没有人对ORM和/或从oodbms迁移到rdbms的经历有什么想法/建议?
答案 0 :(得分:1)
由于您有一个现有的对象模型,并且您希望迁移到ORM解决方案,那么我会说NHibernate肯定是一个不错的选择。原因如下:
使用实体框架将更具挑战性。虽然实体框架在许多方面都是一个功能强大的ORM,但它并不像NHibernate那样成熟,在这种情况下有几个原因,特别是为什么我认为它可能不是最好的选择:
总的来说,在我看来,对于对象优先开发,或者您尝试利用现有对象模型,NHIbernate是更好的选择。对于以数据为中心的开发,实体框架(或linq to sql甚至亚音速)成为更可行的选择。
您可能还想评估商业ORM产品,例如Lightspeed - 我自己对这个特定工具几乎没有经验(客户通常反对在有好的免费替代品的情况下支付ORM)但是它受到高度重视
答案 1 :(得分:0)
我对OODBMSes没有任何经验,但我对NHibernate + MS SQL Server的经验在执行和级联更改方面非常积极,一对多,多对一和多对多许多关系。
您使用的是什么OODBMS工具?有可能OODBMS - >存在RDBMS迁移工具,但我不知道任何。