没有 Linq 的 .net 的 ORM [关闭]

Posted

技术标签:

【中文标题】没有 Linq 的 .net 的 ORM [关闭]【英文标题】:ORM for .net Without Linq [closed] 【发布时间】:2010-12-26 12:17:32 【问题描述】:

我正在寻找支持 linq 的 ORM,我有一个超过(150 个表)的庞大数据库我不能使用 linq To Sql 或实体框架,因为数据库的结构不是很好。我正在重构,所以我正在寻找一个使用老式 SP 和实体映射的 ORM 有什么建议吗?

【问题讨论】:

究竟为什么不能使用 L2S 或 L2E?如果 orm 有自己的 LINQ 提供程序,你介意吗? 这个问题毫无意义 - 数据库结构不合理并不排除使用 Linq,尽管它可能会让它变得不那么愉快。此外,在我看来,它几乎是 EF 固有的,您可以处理映射层中糟糕的数据库结构。 L2S 和 L2E 使用 Keys 来跟踪更新,我想你不知道 :),所以在使用 Linq To sql 或 Linq To 实体时,数据库的结构非常重要。这不是我的情况。我不能使用这些工具,因为我的数据库结构不好......毕竟我的问题是除了 linq to sql 或实体框架之外,什么 ORM 是最好的...... 任何合理的常规 ORM 都将需要主键和外键 - 如果你的数据库是一团糟 - 清理它!不要只是在上面涂一层灰泥来隐藏混乱...... 数据库正在生产中,包含有价值的数据。我正在编写一个新模块,然后我将编辑旧模块,我的问题很简单,因为我不再需要 L2S 和 L2E 以外的 ORM ..... 【参考方案1】:

Subsonic 可能非常适合您。您可以根据需要编辑其 T4 模板,以高度自定义实体和存储库中可用的内容,并且存储过程支持非常好(无论如何,对于我的项目所需的内容)。除了存储过程之外,还有一种相当流畅的语法用于在代码中构建额外的查询,但如果您担心这些查询无法正常工作,您可以直接不使用它们(甚至可能禁用它们)。

至于“不支持 LINQ”,您肯定不能使用该功能吗?

【讨论】:

【参考方案2】:

您可以只使用 Entity Framework 4。您几乎可以使用模型做所有事情,并使用 T4 模板根据您的需要重构代码。生成 POCO 类或适合您需要的类。 自我跟踪实体或让模型默认生成代码。支持 1 对 1 表 - 实体映射和继承,支持您可以为您的域创建的复杂属性。我认为这些应该足以让你工作。

您也可以使用 eSQL 命令而不是 Linq 2 实体,这样可以避免 linq 查询,尽管我看不出有什么理由这样做??? LINQ 太棒了..

【讨论】:

数据库中没有键,正如我之前问过的那样,它的结构不是很好,L2S/L2E。只是不更新​​任何数据。你至少需要使用 PK,这不是我的情况 EF 需要每个实体的密钥。【参考方案3】:

我建议您执行以下步骤:

1) 下载Entity Developer for SQL Server工具

2) 使用 Database First 向导创建 LinqConnect 模型

3) 使用类似 T4 的模板为您的应用程序生成类。如果您需要一些代码生成自定义,请修改这些模板

4) 转到模型类并实现覆盖您的 CRUD 操作的可扩展方法。在这一步,您可以在持久层中提供对存储过程的支持。

【讨论】:

谢谢,我已经下载了免费版本,现在正在试用。非常感谢...

以上是关于没有 Linq 的 .net 的 ORM [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

你会推荐啥ORM? [关闭]

在 ASP.NET MVC2 项目中使用 LINQ to SQL

.net 的简单 orm 映射器 [关闭]

.NET Entity Framework 等 PHP 的 ORM [关闭]

Dapper扩展Dapper.Common框架 Linq To Sql 底层源码.net ORM框架

基于.NET的微软ORM框架视频教程(Entity Framework技术)