使用实体框架存储库在XML列/字符串上构建自定义对象的问题

本文关键字:构建 字符串 自定义 对象 问题 框架 实体 存储 XML | 更新日期: 2023-09-27 17:54:41

我在存储库模式中使用实体框架4.0来填充另一个程序集中的POCO对象。我的一个对象包含来自数据库的XML列(类的字符串类型)。

不幸的是,这个XML字符串包含主键id,然后我需要使用它来检索其他对象(使用存储库)以构建另一个自定义对象。我一直在尝试使用域对象上的自定义get访问器来做到这一点,该访问器试图解析XML,然后从存储库中获取。问题是,这导致我的模型需要存储库,并给了我一个循环依赖。

有什么好的方法来做这样的事情吗?也许需要一些自定义代码来解析EF存储库层中的XML列,并将我需要的内容映射到模型中的自定义对象上??

任何回复都非常感谢,谢谢!

使用实体框架存储库在XML列/字符串上构建自定义对象的问题

没有办法告诉EF XML列实际上是其他实体类型。一旦您将逻辑移动到get访问器,您确实打破了对持久性的创建模型依赖,这是您试图通过使用poco来消除的东西。它会破坏你的领域驱动设计。

在领域驱动设计中,加载对象是存储库的严格责任。因此,您需要以允许您请求加载相关实体的方式构建检索方法,例如:

  • 加载主对象,解析XML并在相同的存储库方法中加载关系
  • 或在单个方法中加载主对象,在另一个方法中解析XML和加载关系

如果主对象不是关系的聚合根(它们可以单独存在),则应该为相关对象创建单独的存储库,并暴露方法以加载由XML字符串定义的对象。