我有一些简单的对象
public class DataClass
{
public int id;
public string Data;
}
public class Job()
{
public int id;
}
public class NewJob : Job
{
public DateTime StartDate;
public DataClass data;
}
然后我在我的 dBContext() 中定义了它们
public DbSet<Job> Jobs { get; set; }
public DbSet<DataClass> DataClass { get; set; }
现在,如果我使用以下代码
NewJob job = (NewJob) db.Jobs.Find(id);
这工作正常,但返回“数据”为空
我知道我用 virtual 关键字定义了这个类,它可以工作并填充“数据”对象。
public class NewJob : Job
{
public DateTime StartDate;
public virtual DataClass data;
}
但在我的情况下,我“通常”不希望填充“数据”对象。所以我需要按需加载它。
如果我尝试类似
NewJob job = (NewJob)db.Jobs.Include("data").First();
我得到一个例外
指定的包含路径无效。EntityType 'Models.Job' 没有声明名为 'data' 的导航属性。
我想这是因为它在尝试包含时正在查看“工作”而不是“NewJob”。
我也不喜欢带有字符串的包含 - 没有设计时检查。