我遇到了一些奇怪的问题,我试图从数据库中取出一条记录,而且似乎大部分都是null
,我甚至知道我是否手动查看已填充的数据库。
模型
public class AdminConfiguration : Entity // Entity is an abstract class containing an ID
{
public bool Authentication { get; set; }
public List<ApplicationConfiguration> ApplicationConfiguration { get; set; }
public List<LinksConfiguration> LinksConfiguration { get; set; }
public EmailConfiguration EmailConfiguration { get; set; }
public bool WakeOnLan { get; set; }
}
基本上对另一个类的任何引用都是null
唯一填充的是WakeOnLan
属性。
查询
public AdminConfiguration Find(int id)
{
return Db.AdminConfiguration.Find(id);
}
我有一种感觉,我对如何设置模型有误解。我期待查询返回一个完全填充的AdminConfiguration
对象。
答案 0 :(得分:2)
尝试将导航属性设置为虚拟以启用延迟加载:
public virtual List<ApplicationConfiguration> ApplicationConfiguration { get; set; }
请参阅https://msdn.microsoft.com/en-us/data/jj193542.aspx
这启用了Entity Framework的延迟加载功能。懒 加载意味着这些属性的内容将是 尝试访问时自动从数据库加载。
答案 1 :(得分:1)
设置模型的最佳方法是:
public class AdminConfiguration : Entity // Entity is an abstract class containing an ID
{
public AdminConfiguration()
{
this.ApplicationConfigurations = new HashSet<ApplicationConfiguration>();
this.LinksConfigurations = new HashSet<LinksConfiguration>();
}
public bool Authentication { get; set; }
public EmailConfiguration EmailConfiguration { get; set; }
public bool WakeOnLan { get; set; }
// Navigation properties
public virtual ICollection<ApplicationConfiguration> ApplicationConfigurations { get; set; }
public virtual ICollection<LinksConfiguration> LinksConfigurations { get; set; }
}