有无连接的 ORM 框架吗?

Posted

技术标签:

【中文标题】有无连接的 ORM 框架吗?【英文标题】:Are there connection-less ORM frameworks? 【发布时间】:2011-02-16 12:24:09 【问题描述】:

我有一个 ADO.NET 断开连接的数据集。我不需要或可以使用 ADO.NET 连接、事务、命令或除该 DataSet 及其内容之外的任何东西。这是我必须使用的持久性库的一个非可选限制。

是否有任何 ORM 框架可以在不连接数据库的情况下完成所有映射工作?

【问题讨论】:

我从未使用过它,但我猜 Linq to DataSet 可能会有所帮助:msdn.microsoft.com/en-us/library/bb387004.aspx。但是,您仍然需要手动进行映射。 太难过了,如果我可以直接与 ADO.NET 连接,给出的每个答案和评论都是可以接受的。可惜我做不到。 【参考方案1】:

您可以将数据集转换为Typed DataSet,然后使用linq-to-dataset 进行查询。

编辑:未经测试,但您可以使用 this 将数据集的架构转换为 xml,然后使用 this 将其转换为类型化的数据集类。

【讨论】:

创建 Typed DS 可能不是一个选项,但它可能是 Typed。 但是他可以使用merge将他的数据集的数据加载到类型化的数据集中。【参考方案2】:

您可以使用 DataSet.WriteXmlSchema() 创建一个描述您的 DataSet 的 XSD 文件,然后执行(在 Microsoft SDKs 文件夹中)xsd.exe /c yourschema.xsd destinationfolder

您将获得具有 DataSet 结构的类...它不能为您完成所有映射工作,但是当您生成类时,您可能会找到一种快速完成此操作的方法。

希望对你有帮助。

编辑:使用这种代码,也许是:http://improve.dk/blog/2007/11/19/automatically-mapping-datatable-to-objects

【讨论】:

我喜欢这个功能。但它太简约了,例如它不处理列表。我很想知道有人为这类任务构建了一个库,否则我最终会自己编写代码。【参考方案3】:

我找到了一个可以做到这一点的库:

http://automapper.codeplex.com/

不特定于 DataSet,但可以很容易地与它们一起使用:

http://house9.blogspot.com/2010/11/automapper-datatable-to-list.html

【讨论】:

以上是关于有无连接的 ORM 框架吗?的主要内容,如果未能解决你的问题,请参考以下文章

Django-ORM操作数据库无数据问题

网络通讯入门篇,面向连接和无连接的套接字到底有什么区别?

ORM是不是必要?

Hibernate ORM框架——连接池相关

Django进阶-ORM框架

ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库