Я не могу понять это.Для простоты я объясню, что я пытаюсь сделать.
В настоящее время я работаю над проектом nHibernate, который использует шаблон репозитория.Внутри базы данных находится множество таблиц с полями «Описание».Теперь я пытаюсь локализовать эти таблицы, чтобы использовать общую таблицу «Ресурс».
Итак, у меня есть две таблицы:
Таблица 1 - Ресурсы: ResourceId, LanguageId, Value
Таблица 2 - LinkLabels: LinkLabelId, Description, ResourceId
Затем есть токен сеанса, который содержит «LanguageId», который является предпочтительным языком пользователя.
Хорошо, стем не менее, мне нужно получить «Value» из ResourcesTable, где ResourceId из LinkLabels = ResourceId из Resources для объектов, имеющих «ResourceId».Но я должен сделать это с типом Generic.
Вот что у меня есть:
public IQueryable<T> ToQueryable<T>()
{
try
{
PropertyInfo resourceProperty = typeof(T).GetProperty("ResourceKey");
if (resourceProperty != null)
{
// Somthing like this, but of course this won't work
// because x.ResourceId doesn't exist because of generic, and the select
// statement is invalue.
//
// return from x in this.session.Query<T>()
// join p in this.session.Query<Resource>() on x.ResourceId equals p.ResourceId
// where p.LanguageId = 1 // this will be from a session object, hardcoded to 1 for now
// select x where x.Description is p.value;
}
else
{
return this.session.Query<T>();
}
}
catch (Exception ex)
{
throw ex;
}
}