ローカリゼーションをサポートするドメイン モデルを作成しようとしています。以前に尋ねられたいくつかのSOの質問を見てきましたが、提案された解決策があまり好きではありませんでした. たとえば、この質問では、ローカライズされたデータをサポートする必要があるエンティティごとに追加のエンティティを作成するのはやり過ぎだと思います。すべてのエンティティのローカライズされたデータを、ローカライズされたデータを保持することのみを目的とする 1 つのエンティティに配置したいと考えています。
私の提案する解決策は次のとおりです。
LocalizedEntity
ローカリゼーションをサポートする必要があるすべてのエンティティが継承するクラスを作成します。LocalizedData
カルチャごとに実際のローカライズされた値を基本的に保持するエンティティを作成します。
アップデート:
public class LocalizedEntity
{
public String Code { get; set; }
}
public enum ResourceType
{
CityName,
CityDescription,
StreetName,
AreaName
//others...
}
public class LocalizedData
{
public Int32 Id { get; set; }
public String Code { get; set; }
public ResourceType Type { get; set; }
public Int32 CultureId { get; set; }
public String Value { get; set; }
}
public class City : LocalizedEntity
{
public Int32 Id { get; set; }
public virtual ICollection<Area> Areas { get; set; }
//others
}
したがって、ビジネス層はローカライズされたエンティティを取得し、 および によってエンティティからローカライズされた値を取得しLocalizedData
ます。そしてもちろん、データベースへの多くの往復を避けるために、何らかのキャッシングが適切な場合があります。Code
ResourceType
あなたの考え?