Я использую EF 4 и имею сущности Consultant, User и OrganizationArea. Каждая сущность-консультант имеет свойство навигации пользователя, и каждая сущность-пользователь может быть назначена многим OrganisationAreas. Я пытаюсь получить список консультантов с их встроенным свойством пользователя, которые назначены определенной области организации.
Сущность My Consultant также имеет свойство только для чтения, которое возвращает полное имя консультанта путем объединения имени и фамилии его свойства Users следующим образом:
public string FullName
{
get { return User.Forename + " " + User.Surname; }
}
Следующие работы Linq извлекают Консультантов, которые назначены мне так, как мне нужно, но не включают свойство User. Вы видите, почему?
var result = from c in _dbContext.Consultants.Include("User")
from u in _dbContext.SystemUsers
from oa in _dbContext.OrganisationAreas
where oa.OrganisationAreaId == _sharedInfo.LoggedInSite.OrganisationAreaId
&& u.Current
&& c.UserId == u.UserId
&& c.User.Sites.Count(s => s.OrganisationAreaId == _sharedInfo.LoggedInSite.OrganisationAreaId) > 0
select c;
Когда я создаю и обновляю ObservableCollection типа Consultant и пытаюсь привязать к коллекции свойство FullName, User имеет значение null.
Я решил, выбрав анонимный тип и получив доступ к consult.user для проекта, а затем просматривая мои анонимные типы следующим образом, но я хотел бы понять, что я пропустил?
var result = from c in _dbContext.Consultants
from u in _dbContext.SystemUsers
from oa in _dbContext.OrganisationAreas
where oa.OrganisationAreaId == _sharedInfo.LoggedInSite.OrganisationAreaId
&& u.Current
&& c.UserId == u.UserId
&& c.User.Sites.Count(s => s.OrganisationAreaId == _sharedInfo.LoggedInSite.OrganisationAreaId) > 0
select
new
{
Consultant = c,
User = c.User
};
var theConsultants = result.ToList();
ConsultantUsers = new ObservableCollection<Consultant>();
foreach (var rec in theConsultants)
{
ConsultantUsers.Add(rec.Consultant);
}
Спасибо за любую помощь.