Так же, как говорится в вопросе, я знаю, что используя NHinbernate, я могу задать конкретный запрос Fetch(Func<T,bool>)
и даже FetchMany()
.Но что, если я захочу поступить наоборот?
Например, скажем, у нас есть класс ..
class Employee {
public virtual string Name { get; set; }
public virtual Address Address { get; set; }
public virtual double Salary { get; set; }
}
Если Employee
смотрит на свой собственный профиль, я бы хотел Address
и Salary
быть оказанным.Но что, если другой сотрудник ищет?Казалось бы, удобнее создать один ASP.NET MVC View, но специально не возвращать данные, которые необходимо скрыть.Вот как ..
if( // myself // ) {
return employee = session.Query<Employee>()
.Fetch(context => context.Address)
.Take(1)
.SingleOrDefault();
}
else
return employee = session.Query<Employee>()
.Deny(context => context.Address)
.Deny(context => context.Salary)
.Take(1)
.SingleOrDefault();
Тогда мой взгляд может выглядеть следующим образом:
@model Employee
<h2>@Model.Name</h2>
<h4>@Html.DisplayFor( model => model.Address )</h4>
<h4>@Model.Salary</h4>
Я понимаю, что это не лучший пример во вселенной, но возможна ли такая вещь?До сих пор я не нашел методов, которые бы явно указывали объекту не возвращаться.