.NET 2.0 的任何类似实体框架的 ORM? (数据库优先!)

Posted

技术标签:

【中文标题】.NET 2.0 的任何类似实体框架的 ORM? (数据库优先!)【英文标题】:Any Entity Framework-like ORMs for .NET 2.0? (DB-first!) 【发布时间】:2011-07-23 17:10:23 【问题描述】:

由于我当前项目的具体情况,我必须继续使用 .NET 2.0。 .NET 2.0 是否有类似实体框架的 ORM?

    我对非 LINQ 接口完全没问题。 users.Where(u => u.Age > 100).Count() 这样的语法很好。 我需要使用 DB-first 方法:我已经有一个包含大约 30 个表的 DB,并且正在考虑简化使用它的方法。因此,如果可以从现有数据库生成所需的代码,我将不胜感激。 如果它不会生成所有必需的代码但提供手动描述数据库结构的方式(例如使用属性),也可以。基本上,我只是希望能够构建或多或少复杂的查询,而不会弄乱真正的 SQL,SqlParameters 和 DataSets/DataTables 以及所有这些 int.Parse(row[12].ToString())(这是我正在尝试的遗留代码摆脱) 另外,如果我能够通过调用现有存储过程来“覆盖”某些特定“查询”,那就太好了。

最重要的是 p.2 - DB 优先。有这种东西吗?还是我的想法完全错了?将不胜感激任何想法。

【问题讨论】:

【参考方案1】:

您最好的选择是查看NHibernate。许多(大多数?)人认为它比 EF 4.1 功能更完整、更强大,而且在 *** 和 Web 的其他部分有大量资源可以指导您的开发过程。

请务必查看Fluent NHibernate,以便轻松从数据库映射到 C# 对象。编辑 XML 文件的替代方法复杂、笨重且耗时。

请注意,您可能需要使用与 .NET 2.0 兼容的较旧但功能齐全的 NHibernate 版本(我认为,但不肯定的是,较新的版本需要.NET 3.5)。

【讨论】:

【参考方案2】:

有很多可用的 ORM,但其中一些是商业的 (LLBLGen Pro)。 NHibernate 2.1 对您来说可能是个不错的选择(我认为 NHibernate 3.x 需要 .NET 3.5)。

您还应该考虑转向更新的 .NET 版本。应避免在 .NET 2.0 上开始新的开发,并且在现有旧代码库 IMO 中涉及新技术会破坏应用程序的架构和可维护性。

编辑:

所以,如果可以从现有数据库生成所需的代码,我将不胜感激。

最重要的是 p.2 - DB first。

ORM 和代码生成是两个不同的领域。 DB first 并不意味着代码生成——它意味着映射到现有数据库而不需要更改数据库。为您生成代码不是 ORM 的重点。 ORM 的重点是允许您将 DB 映射到类和抽象查询。如果对您来说最重要的一点是代码生成,那么您应该寻找其他东西,然后是 ORM。 NHibernate 没有包含这样的代码生成,但有一些额外的项目添加了类似的功能。

【讨论】:

如果需要代码生成,LLBLGen Pro 值得评估。它具有适用于各种 ORM 的设计器和代码生成器,并提供类似于实体框架设计器的体验。

以上是关于.NET 2.0 的任何类似实体框架的 ORM? (数据库优先!)的主要内容,如果未能解决你的问题,请参考以下文章

在 Umbraco 中使用实体框架或任何其他 ORM

.Net 2.0 的微 ORM? [关闭]

是否可以将表动态映射到实体框架核心或任何其他 ORM

[ASP.NET MVC]: - EF框架学习手记

任何 .NET ORM 是不是支持开箱即用的本地化实体?

应用程序中断访问 dbcontext、Asp .net 核心 web api 2.0 与实体框架核心 2.0 数据库第一种方法