【发布时间】:2009-04-11 23:35:09
【问题描述】:
我正在整合一些遗留系统。他们每个人都有不同的数据库;我需要为其中的大多数编写数据访问代码。
无法更改数据库架构(我可能可以应用一些索引等,但表及其列必须保留结构)。一些数据库设计良好,具有适当的关系和主/外键,而其他一些数据库则非常缺乏。
您会为此任务选择哪个 ORM?我想在整个项目中使用相同的 ORM;我的要求是:
- 能够在代码中重命名表或列;但在数据库中保留旧名称。
- 合理的代码生成
- 高效的 LINQ 支持(针对数据模型的 LINQ 查询应转换为高效的 SQL)。
- 生成的数据类最好是POCO's。
- 最好支持不同的数据库引擎。
我目前在 LINQ-To-SQL 方面的经验最丰富;但我觉得这可能是这个项目的错误选择。我愿意花一些时间来学习一个新的框架。
【问题讨论】:
-
Lightspeed 3.0 的 LINQ 实现不完整(只需启动 SQL 分析器并在 1000 多条记录上运行一些 join 查询),并且也不能正确执行 LINQ 投影。 . 即,如果您只想要 Customers 表中的 Name 字段,Lightspeed 仍将选择 SQL 中 Customers 中的所有列,并仅投影名称到您的调用代码。现在这很糟糕!
标签: .net orm legacy-database