我有很多具有3种语言列的实体:DescriptionNL,DescriptionFR和DescriptionDE(描述,信息,文章,...全部使用3种语言)。
我的想法是创建一个第四个属性Description
,它根据Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName
返回正确的值。
但缺点是,当您的存储库中有一个GetAll()
方法用于下拉列表或其他内容时,您将3个值返回到应用程序层。额外的网络流量。
向域服务添加参数语言以检索数据也未完成"据DDD专家介绍。原因是语言是UI的一部分,而不是域。那么用正确的描述检索模型的最佳方法是什么?
答案 0 :(得分:2)
您说正确的语言与域模型无关,这是正确的。如果您需要操作对象或数据,则需要使用该数据的某些规范形式。这仅适用于值在您的域中具有任何含义的情况。任何仅用于分类的东西可能对您的模型不感兴趣,但仍然可以使用规范值。
规范值的附加好处是,您可以知道甚至跨系统的值代表什么,因为您可以进行映射。
我之前的一个项目中使用的规范方法包含各种语言描述的数据集,但每个值的键都相同。例如,Mr
是键1,而Mrs
是键2.现在法语M.
将是键1,Mme
将是键2.这些值是您的组织值。现在让我们假设你有系统A和系统B.在系统A Mr
是值67而在系统B Mr
是值22.现在你可以通过规范值映射到这些值。
您不一定将这些实体存储在存储库中,但它们应该位于可以轻松查询的某些读取模型中。数据库之旅不应该太大,因为您可以将结果与版本号或有效期一起缓存。