重写SQL / vb6应用程序 - 我应该使用nHibernate还是Linq

时间:2009-12-22 16:38:13

标签: linq nhibernate orm

我有一个遗留的VB6应用程序,我在.Net中重写。我以前没有使用ORM包(是老式的,喜欢知道正在使用什么SQL的类型),但是我看到了很好的NNibernate报告,我很想将它用于这个项目。我只是想检查一下,我不会在脚下射击自己。

因为我的新应用程序最初将与现有应用程序一起运行,所以我使用的任何ORM都必须使用现有的数据库架构。另外,我需要使用SQL服务器文本搜索。从我收集的内容来看,LINQ to SQL不支持文本搜索,所以这将排除它。

应用程序使用它自己为新对象分配ID的方法 - NHibernate会允许这样做,还是希望使用它自己的机制?

我也读过NHibernate的缓存。我需要确保从NHibernate访问数据库时可以立即访问插入NHibernate外部的行,反之亦然。

有4个或5个主表和10个左右的子表。虽然一些主表有多达一百万行,但应用程序本身通常只会返回一些。用户负载很低,所以我不认为性能有问题。

目前我不确定它是ASP.NET还是win表单,但无论哪种方式我都希望使用数据绑定。

在功能方面,该应用程序并不特别复杂 - 重新实现它的预算大约需要20个工作日,所以如果我要使用ORM,那么它必须能够很快开始为自己付出代价。同样,我希望应用程序易于部署,不需要一些怪物企业框架。

对于这是否适合NHibernate项目的任何想法都将非常感激。

3 个答案:

答案 0 :(得分:3)

虽然ORM很好,但我个人不会承担在20天项目中使用任何ORM的风险,如果我不得不在我去的时候吸收ORM学习曲线。

如果您拥有ADO.NET基础架构,那么您可以在没有ORM功能的情况下生活,这是一种风险较低的方法。

你最终应该学习ORM和Linq(不一定是Linq To Sql),但是当没有立即时间压力时,它会更加愉快。

这听起来更像是一个风险管理问题,需要您做出个人决定,看看您是否愿意看到项目由于采用新技术而失败。

答案 1 :(得分:0)

我已经成功地将一个NHibernate域模型安装到一些遗留数据库模式中 - 它尚未被证明是不可能的,但它有时并非没有它的困难。最简单的映射模式是那些所有主键和外键都是单列模式的模式,但只有很少的表,你应该能够相对快速地进行映射,即使你的情况不是这样。

我强烈建议,特别是考虑到你的时间表,你使用Fluent NHibernate进行映射 - 学习XML映射文件语法的时间可能太大了。但是,您需要使用XML映射文件来处理全文索引(假设这是您的意思),将这些文件写为命名SQL查询。 (有关详细信息,请参阅nhibernate.info documentation。)

建议您花一两天时间尝试为几个表创建模型,并编写代码以与它们进行交互。在SO上总会有人准备回答你的任何问题。

您可能还想看看Linq到NHibernate - 我们发现它在抽象更简单的接口背后的数据库访问方面很有帮助。但它的流畅NHibernate将为您在NHibernate学习曲线上的“作弊”方面带来最大和最快的胜利。

答案 2 :(得分:0)

您也可以查看LLBL Gen Pro。这是一个非常成熟的ORM,可以处理很多不同的场景。