我正在使用EF 4并且有Consultant,User和OrganisationArea实体。 每个顾问实体都有一个用户导航属性,每个用户实体可以分配给许多OrganisationAreas。我正在尝试获得一个顾问名单,这些顾问的内嵌用户属性分配给了某个组织单位区域。LINQtoEntities包括不检索导航属性
我的顾问实体还具有由它的名字及姓氏结合用户的属性,像这样返回一个顾问的全名是只读属性:
public string FullName
{
get { return User.Forename + " " + User.Surname; }
}
以下的Linq的工作原理,它检索根据需要分配的顾问,但不包括其用户属性。你能明白为什么吗?
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和尝试绑定到集合中的FullName属性,用户为空。
我已经解决了选择一个匿名类型和访问consultant.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);
}
感谢您的帮助。