为什么没有Inlcude
的LINQ返回null以引用另一个模型?
模型
public class ApplicationUser : IdentityUser
{
public FilePath FilePath { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
}
public class FilePath
{
public int FilePathId { get; set; }
[StringLength(255)]
public string FileName { get; set; }
public FileType FileType { get; set; }
}
public enum FileType
{
Avatar = 1,
Photo = 2,
Study = 3
}
控制器
private ApplicationDbContext db = new ApplicationDbContext();
public ActionResult Details(string id)
{
//...
ApplicationUser appUser1 = db.Users.Find(id);
ApplicationUser appUser2 = db.Users.Include(i => i.FilePath).SingleOrDefault(i => i.Id == id);
if(appUser1.FilePath == null); //null
if(appUser2.FilePath == null); //not null, has all data
return View(appUser2);
}
答案 0 :(得分:2)
您应该将FilePath
属性标记为virtual
,以使延迟加载工作:
public virtual FilePath FilePath { get; set; }
顺便说一句:您的问题应更改为“实体框架”,不包含“返回”空白&#39;。
实体框架!= LINQ 。 LINQ是一个更高级别的概念,而Entity Framework只是实现了LINQ提供程序,因此您可以使用linq语法查询数据库。