まず最初に、私はこのようないくつかの解決策を調査しました 今、私はこのような何かを達成しようとしています:
public class Article : Entity
{
public int ID {get;set;}
public CultureInfo Culture {get;set;}
public DateTime PublishedOn {get;set;}
public string Title {get;set;}
}
今ここに事実があります:
- IDは一意の識別子です
- カルチャは異なるカルチャバージョンを区別する必要があります
- タイトルプロパティはローカライズする必要があります(カルチャごとに1つ生)
- PublshDateはすべてのカルチャで同じであるため、ローカライズしないでください。
さて、これが私が必要とするものです:
- enttyごとに1つのクラスのみを使用します。「Article」クラスと「ArticleLocal」クラスは必要ありません。
- NHibernateがエンティティに適切な文化を生で取得できるようにするシステムを提供します(現在の文化のグローバルプロパティに基づく)
- 可能であれば、NHibernateに初期化時にローカルテーブルを自動的に作成させる。
私の考えは属性を使用することでしたが、すでに証明された解決策があるかどうかはわかりません。ここにアイデアがあります:
[LocalizedEntity]
public class Article : Entity
{
public int ID {get;set;}
[LocalizedCulture("CultureID")]
public CultureInfo Culture {get;set;}
public DateTime PublishedOn {get;set;}
[Localized("Title")]
public string Title {get;set;}
}