私が提供する魔女のlanguageIdに応じて翻訳を取得するためにNHibernateをセットアップしようとしています。
次のようなクラスがあります。
public class Location
{
public virtual Guid Id { get; set; }
[Translate("Name")]
public virtual string Name { get; set; }
[Translate("Description")]
public virtual string Description { get; set; }
public virtual bool Popular { get; set; }
public virtual bool Active { get; set; }
}
私の翻訳属性は次のようになります。
[AttributeUsage(AttributeTargets.Property)]
public class TranslateAttribute : Attribute
{
public readonly string DatabaseSuffix;
public TranslateAttribute(string databaseSuffix)
{
DatabaseSuffix = databaseSuffix;
}
public string GetSuffix()
{
return DatabaseSuffix;
}
}
私は現在使用している言語を知っているものもあります:
public interface ILanguageProvider
{
void SetLanguage(string language);
string GetCurrentLanguage();
}
規約を使用して nhibernate をセットアップしたいので、Translate 属性を持つプロパティを持つものをフェッチするときは、プロパティごとに次のように翻訳テーブルに対してクエリを実行する必要があります (または、一度にすべての翻訳を取得する場合があります)。
SELECT TOP 1 Text
FROM Translations
WHERE Id = '{Id_From_my_Entity}_DataBaseSuffixFromTheTranslationAttribute' AND
LanguageId = LanguageIdFromGetCurrentLanguageInTheImplentationOFILanguageProvider;
そして、取得した結果を、翻訳を取得しているプロパティに設定します。
これは可能ですか?どうすればこれを実装できますか?
nHibernate 3.3.1.4000 と Fluent NHibernate 1.3.0.733 を使用しています