Linq 为什么实体框架导航属性为空?
我使用的是代码优先模型,关系如下Linq 为什么实体框架导航属性为空?,linq,ef-code-first,entity-framework-core,Linq,Ef Code First,Entity Framework Core,我使用的是代码优先模型,关系如下 public class ApplicationUser : IdentityUser { public string UserFirstName { get; set; } public string UserLastName { get; set; } public string UserSchool { get; set; } public UserProfileData UserProfileData { get;
public class ApplicationUser : IdentityUser
{
public string UserFirstName { get; set; }
public string UserLastName { get; set; }
public string UserSchool { get; set; }
public UserProfileData UserProfileData { get; set; }
public int? MedicalSpecialtyId { get; set; }
public virtual MedicalSpecialty MedicalSpecialty { get; set; }
// public int? AnalyticsDataId { get; set; }
// public ICollection<AnalyticsData> AnalyticsDatas { get; set; }
}
public class MedicalSpecialty
{
public int Id { get; set; }
public string Description { get; set; }
// public int ApplicationUserId { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
public ICollection<ProgramDetailData> ProgramDetailDatas { get; set; }
}
但当我在上面运行此代码时,currentUser.MedicalSpecial不再为NULL。发生了什么事??不知何故,LINQ查询唤醒了对象并用数据填充它
var userSpecialtyId = currentUser.MedicalSpecialtyId;
userSpecialtyName = _medicalSpecialtyRepository.Find
(x => x.Id == userSpecialtyId).FirstOrDefault().Description;
userSpecialtyName = currentUser.MedicalSpecialty.Description;
是否为db上下文启用了延迟加载和代理创建?这是EF6,不是EF Core,对吗?这是EF Core。请更新标签。此外,除非您使用的是2.1版本预览版,否则请查看文档的部分(目前还不支持延迟加载)。因此,我应该使用。包括在存储库模式中作为解决方案?正确。这是目前为止唯一的选择。
var userSpecialtyId = currentUser.MedicalSpecialtyId;
userSpecialtyName = _medicalSpecialtyRepository.Find
(x => x.Id == userSpecialtyId).FirstOrDefault().Description;
userSpecialtyName = currentUser.MedicalSpecialty.Description;