gpt4 book ai didi

c# - 在域驱动设计中更改来自多个源的跟踪实体

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:01 25 4
gpt4 key购买 nike

我目前正在开发一个相当大的网络应用程序,并且正在使用域驱动设计。

我目前在跟踪对我的产品实体的更改时遇到了一些麻烦。问题是,产品部分由 SQL Azure 中的数据构建,部分由 Azure 表存储中的数据构建。如果更改了某些属性,我将需要坚持两者,其他更改只坚持一个。

因此我无法使用 NHibernate 或 Entity Framework 来跟踪更改。例如

上的 Price 参数
    public void AddPrice(Price price)

Product 实体上的方法必须持久化到 SQL Azure,计算价格范围并将结果保存到 Azure Table Storage。

你会如何解决这个问题?

想法:

1) 我考虑过基于 CaSTLe.DynamicProxy 实现我自己的更改跟踪器,但这似乎相当乏味。

2) 在域实体内部实现事件。这可不是什么好事。

最佳答案

将一个实体分散在多个持久存储中可能不是一个好主意。更准确地说,这可能意味着它不是同一个实体,而是可以拆分成更小、设计更精确的部分。

calculations on a range of prices will take place

您确定这些计算会影响产品实体并且应该由产品存储库中使用的同一 NHibernate/EF session 处理吗?由于它们必须存储在别处,难道它们不会构成通用语言中的一流概念,从而产生一个具有自己的持久性逻辑的独立实体吗?

参见 http://ayende.com/blog/153699/ask-ayende-repository-for-abstracting-multiple-data-sources

关于c# - 在域驱动设计中更改来自多个源的跟踪实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10705249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com