.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,SqlParameter
s 和 DataSet
s/DataTable
s 以及所有这些 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? (数据库优先!)的主要内容,如果未能解决你的问题,请参考以下文章
应用程序中断访问 dbcontext、Asp .net 核心 web api 2.0 与实体框架核心 2.0 数据库第一种方法