有无连接的 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 框架吗?的主要内容,如果未能解决你的问题,请参考以下文章