domain-driven-design - 如何检索多语言领域模型?

标签 domain-driven-design multilingual ddd-repositories

我有很多具有 3 种语言列的实体:DescriptionNL、DescriptionFR 和 DescriptionDE(描述、信息、文章……全部采用 3 种语言)。

我的想法是创建第四个属性Description,它根据Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName返回正确的值。

但一个缺点是,当您的存储库中有用于下拉列表或其他内容的 GetAll() 方法时,您会将 3 个值返回到应用程序层。所以额外的网络流量。

根据 DDD 专家的说法,向域服务添加参数语言以检索数据也是“未完成的”。原因是语言是 UI 的一部分,而不是域的一部分。那么检索具有正确描述的模型的最佳方法是什么?

最佳答案

您说语言与域模型无关,这是正确的。如果您需要操作对象或数据,您将需要使用该数据的某种规范形式。这仅适用于该值在您的域中具有任何含义的情况。任何仅用于分类的内容可能不会让您的模型感兴趣,但仍然使用规范值可能会很有用。

规范值的额外好处是,您甚至可以跨系统知道该值代表什么,因为您可以进行映射。

我之前的一个项目中使用的规范方法具有带有各种语言描述的数据集,但每个值的键都是相同的。例如,Mr 是键 1,而 Mrs 是键 2。现在在法语中,M. 将是键 1 和 Mme 将是关键 2。这些值(value)观是您的组织值(value)观。现在假设您有系统 A 和系统 B。在系统 A 中 Mr 的值为 67,在系统 B 中 Mr 的值为 22。现在您可以通过规范值。

您不一定将它们作为实体存储在存储库中,但它们应该位于某种可以轻松查询的读取模型中。访问数据库应该不会有太大问题,因为您可以将结果与版本号或到期日期一起缓存。

关于domain-driven-design - 如何检索多语言领域模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36281297/

相关文章:

.net - 如何在洋葱架构上实现服务和存储库?

design-patterns - 使存储库持久性无知的优点/缺点是什么?

entity-framework - Entity Framework 作为存储库和 UnitOfWork?

domain-driven-design - DDD : creating multiple aggregates with a shared life-cycle in a single transaction

android - 在 Android 上为多语言更改 ImageView src

sparql - SPARQL 中的 lang 函数是什么?

c# - 聚合根具有复合主键的存储库

wpf - 在 WPF/XAML 中处理多语言支持的布局问题的最佳方法是什么?

repository - DDD 中的存储库应该返回什么

domain-driven-design - DDD : where should logic go that tests the existence of an entity?