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

重写SQL/vb6应用程序-我应该使用nHibernate还是Linq,linq,nhibernate,orm,Linq,Nhibernate,Orm,我有一个遗留的VB6应用程序,我正在.Net中重写。我以前没有使用过ORM包(作为一个老式的类型,我喜欢知道正在使用什么样的SQL),但是我看到了NNibernate的好报告,我很想在这个项目中使用它。我只是想确认一下,我不会朝自己的脚开枪 因为我的新应用程序最初将与现有应用程序一起运行,所以我使用的任何ORM都必须与现有数据库模式一起工作。另外,我需要使用SQL server文本搜索。据我所知,LINQtoSQL不支持文本搜索,所以这将排除这种可能性 应用程序使用自己的方法为新对象分配ID——

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

因为我的新应用程序最初将与现有应用程序一起运行,所以我使用的任何ORM都必须与现有数据库模式一起工作。另外,我需要使用SQL server文本搜索。据我所知,LINQtoSQL不支持文本搜索,所以这将排除这种可能性

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

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

有4或5个主表和10个左右的辅助表。虽然有几个主表有多达一百万行,但应用程序本身通常只返回几行。用户负载较低,因此我预计性能不会成为问题

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

就功能而言,该应用程序并不特别复杂——重新实现它的预算约为20个工作日,因此,如果我要使用ORM,它必须是能够很快开始为自己付费的东西。类似地,我希望应用程序能够简单地部署,并且不需要一些怪物企业框架


任何关于这是否适合NHibernate项目的想法都将不胜感激。

我已经成功地将NHibernate域模型安装到一些遗留数据库模式中-这还不是不可能的,但有时也不是没有困难的。最容易映射的模式是那些所有主键和外键都是单列键的模式,但是由于表太少,即使您的表不是这样,您也应该能够相对快速地进行映射

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

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


您可能还想看看Linq to NHibernate——我们发现它在将更多的数据库访问内容抽象到一个简单的界面之后非常有用。但流利的NHibernate将为您在NHibernate学习曲线上的“作弊”带来最大和最快的胜利。

我已经成功地将NHibernate域模型拟合到一些遗留数据库模式中-这还不是不可能的,但有时也不是没有困难的。最容易映射的模式是那些所有主键和外键都是单列键的模式,但是由于表太少,即使您的表不是这样,您也应该能够相对快速地进行映射

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

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


您可能还想看看Linq to NHibernate——我们发现它在将更多的数据库访问内容抽象到一个简单的界面之后非常有用。但流利的NHibernate将为您在NHibernate学习曲线上的“作弊”带来最大、最快的胜利。

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

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

虽然ORM很好,但我个人不会冒险尝试在20天的项目中使用任何ORM,如果我必须在学习过程中吸收ORM的学习曲线

如果您有ADO.NET基础架构,并且可以不使用ORM功能,那么这是一种风险要小得多的方法

您最终应该学习ORMs和Linq(不一定是linqtosql),但在没有即时时间压力的情况下,学习会更加愉快


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

虽然ORM很好,但我个人不会冒险尝试在20天的项目中使用任何ORM,如果我必须在学习过程中吸收ORM学习曲线的话

如果您有ADO.NET基础架构,并且可以不使用ORM功能,那么这是一种风险要小得多的方法

您最终应该学习ORMs和Linq(不一定是linqtosql),但在没有即时时间压力的情况下,学习会更加愉快

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