我正在开发一个带有SQLite数据库的WPF应用程序,用于本地数据存储。我从NuGet安装了EntityFramework 6.1.3和System.Data.SQLite 1.0.105.1,并正确配置了App.config文件。
这些是我的实体
public class Event
{
public Guid Id { get; set; } = Guid.NewGuid();
public DateTime Date { get; set; }
public string Description { get; set; }
public virtual Guid ContractId { get; set; }
public virtual Contract Contract { get; set; }
}
public class Contract
{
public Guid Id { get; set; } = Guid.NewGuid();
[Required]
public string Code { get; set; }
public string Description { get; set; }
public virtual ICollection<Event> Events { get; set; }
}
当我执行以下代码时,我得到一个 System.NullReferenceException 异常,如果我放一个中断,我可以看到 e1 中的合约是空的。
using (SqliteDbContext ctx = new SqliteDbContext())
{
var e1 = ctx.Events.FirstOrDefault();
MessageBox.Show(e1.Contract.Id.ToString());
}
尝试使用预先加载来加载相关实体:
using (SqliteDbContext ctx = new SqliteDbContext())
{
var e1 = ctx.Events.Include(x => x.Contract).FirstOrDefault();
MessageBox.Show(e1.Contract.Id.ToString());
}
实体框架加载相关实体:https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113(.aspx