WPF, SQLite and Lazy Loading



我正在开发一个带有SQLite数据库的WPF应用程序,用于本地数据存储。我从NuGet安装了EntityFramework 6.1.3System.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

最新更新