Аналогично ответу SWeko, альтернатива, позволяющая вам ввести idSelector (чтобы предотвратить сравнение от Object
до Guid
...)
public T GetById<T, TKey>(TKey id, Func<T, TKey> idSelector)
{
return Session.Query<T>().FirstOrDefault(x => idSelector(x) == id);
}
Вы бы назвали это примерно так..
var result = GetById(guidId, (AnotherEntityClass x) => x.MyClassId);
Более того, если вы добавили следующий класс ...
public class YetAnotherEntityClass
{
public long MyId {get;set}
}
Вы все еще можете использовать тот же метод ...
var result = GetById(12345, (YetAnotherEntityClass x) x=> x.MyId;
Если вы обнаружите, что это приводит к полной загрузке таблицы, учтите следующее:
public T GetFirstByCriterion<T, bool>(Expression<Func<T, bool>> criterion)
{
return Session.Query<T>().FirstOrDefault(criterion);
}
, который можно вызвать с помощью
var result = GetFirstByCriterion((AnotherEntityClass x) x => x.AnotherProprty = guidId);