使用 POCO 实体框架存储库从 XML 列/字符串构建自定义对象时出现问题

发布于 2024-11-05 04:19:22 字数 325 浏览 0 评论 0原文

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

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

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

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

I'm using Entity Framework 4.0 within a repository pattern to populate my POCO objects which are in another assembly. One of my objects contains an XML column from the database (a string type on the class).

Unfortunately, this XML string contains primary key IDs that I need to THEN use to retrieve other objects (with the repository) to build another custom object. I've been trying to do this using a custom get accessor on the domain object that tries to parse the XML and then go fetch from the repository. The problem is that this results in my model requiring the repository and gives me a circular dependency.

Is there any good way to do something like this? Perhaps some custom code to parse the XML column within the EF repository layer and map what I need to on a custom object in my model??

Any responses are greatly appreciated, thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

來不及說愛妳 2024-11-12 04:19:22

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

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

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

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

No there is no way to tell EF that XML column is actually other entity type. Once you move the logic to the get accessor you indeed break create model dependency on persistence which is something you are trying to remove by using POCOs. It will break your domain driven desing.

In domain driven design loading objects is strict responsibility of repository. So you need to build your retrieval method in the way that allows you to request loading related entities, for example:

  • load main object, parse XML and load relations in the same repository method
  • or load main object in single method and parse XML and load relations in another method

If the main object is not aggregate root for relations (they can exists separately) you should create separate repository for related objects and expose method just to load objects defined by XML string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文