与复杂的 .Net 通用对象(例如嵌套的 List<...> 等)一起使用的 ORM?

Posted

技术标签:

【中文标题】与复杂的 .Net 通用对象(例如嵌套的 List<...> 等)一起使用的 ORM?【英文标题】:ORMs that work with complex .Net generic objects (e.g. nested List<...>, etc)? 【发布时间】:2009-10-06 20:05:52 【问题描述】:

我刚刚开始为一个新项目建模数据,它必须是可持久的。

看起来最自然的 OO 模型会有很多嵌套的 .Net 泛型。对象列表,并且这些对象还将包含其他泛型类型的列表,依此类推,嵌套至少三层。

理想情况下,我只想以 OO 方式设计数据模型,并希望有一个 ORM 可以让我(神奇地;-)将整个模型持久保存到关系数据库中,而无需我拥有完全不用担心关系模式。

我愿意牺牲性能以简化初始实施,但允许优化已识别瓶颈的解决方案也很好。

是否有任何以这种方式工作的 ORM 选项?

或者我应该只是序列化数据...Google's Protocol Buffers 看起来是一个有趣的选项。

【问题讨论】:

【参考方案1】:

鉴于您根本不想担心“关系模式”,我建议您使用Subsonic 或Lightspeed。

它们的工作方式略有不同,但都使 .NET 非常非常容易实现。

【讨论】:

@reed - 感谢您的建议。我已经看过 Lightspeed,但看起来它们仍然非常以 DB 为中心 - mindscape.co.nz/blog/index.php/2008/06/17/… 有很多对外键的引用等。我希望找到可以采用任意 C# 复杂对象并创建模式的东西从那。 Lightspeed 在这方面做得很好。不过,亚音速更容易。 Subsonic 确实,顺便说一句,处理嵌套列表 -> 自动分离表映射。这很漂亮。【参考方案2】:

我还建议 Subsonic 使用 SimpleRepository 模板。

【讨论】:

@aanund - 感谢您的链接。 Subsonic 似乎有我正在寻找的以对象为中心的方法,但他们展示的示例仅使用简单类型。不知道 Subsonic 能不能自动持久化 List 等泛型类型?

以上是关于与复杂的 .Net 通用对象(例如嵌套的 List<...> 等)一起使用的 ORM?的主要内容,如果未能解决你的问题,请参考以下文章

从嵌套列表中组合对象

C#Generic List to Json嵌套对象

无法将当前 JSON 数组(例如 [1,2,3])反序列化为具有复杂和嵌套对象的类型

一个复杂查询与多个简单查询

Map list深层嵌套访问增强工具,可以像js 对象一样访问

Python 自动将dict-list嵌套数据 转换成 带类型定义的对象