вот моя ситуация, я хочу использовать общий reposity для запроса данных, вот код:NHibernate родового reposity queryover
public T SingleOrDefault(Expression<Func<T, bool>> filter)
{
return Transact(() => session.QueryOver<T>().Where(filter).List().FirstOrDefault());
}
protected virtual TResult Transact<TResult>(Antlr.Runtime.Misc.Func<TResult> func)
{
try
{
if (!session.Transaction.IsActive)
{
TResult result;
using (var tr = session.BeginTransaction())
{
result = func.Invoke();
tr.Commit();
}
return result;
}
return func.Invoke();
}
catch (Exception e)
{
Log.Error(e);
throw new Exception(e.Message);
}
}
, но когда я использую метод, такие как:
Expression<Func<User,bool>> filter = user => String.Compare(user.Name, “TommyLike”, System.StringComparison.OrdinalIgnoreCase) == 0;
var result = _kernel.Get<IReposity<User>>.SingleOrDefault(filter)
, кажется, что не может распознать пользователь уага в фильтре, но когда я изменить фильтр:
filter = user => user.Name == "TommyLike"
он работает нормально, Кто-нибудь знает, как это does't работу в первой попытке, и как решить эту проблему
Большое спасибо, он работает! @Najera – TommyLike