我正在尝试设置 NHibernate 以根据我提供的女巫语言 ID 获取翻译。
我有一个看起来像这样的类:
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-attribute 属性的任何内容时,它应该针对每个属性像这样查询我的 Translations-table(或者可能一次获取所有翻译):
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