WPF,SQLite和延迟加载 - c#

我正在使用带有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内的Contract为空。

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

WPF WebBrowser甚至使用ObjectForScripting在单独的线程上锁定UI - javascript

在与WPF Web浏览器控件绑定的ObjectForScripting上调用方法时,网页UI锁定会出现一个奇怪的问题。进一步的研究使我们意识到整个UI(包括WPF应用程序而不是WebBrowser)都已锁定。使用的技术是带有Caliburn.Micro和Autofac的WPF。我在COM可见类上使用方法来推送到Caliburn.Micro提供的事件聚合器。进…

SQLite-无法连接数据库 - c#

背景:1.它是一个使用Sqlite databse的C#应用​​程序2.如果不存在db,则此应用程序将创建一个空的db,并将数据从服务器同步到该数据库。问题:1.有时应用程序突然崩溃。似乎有一些未处理的异常。2.即使我重新启动该应用程序,它也立即崩溃。临时解决方案:1.将数据库复制到其他位置,然后删除原始数据库。2.运行该应用程序。没有崩溃。由于不存在任何数…

SQLIte SUM日期时间 - c#

我有一个包含行和时间值的数据库。我想要该时间值的总和(通常,格式为%H:%M)。我这样使用SUM值:SELECT SUM(n_hores) FROM table; 但只有我得到0.0。我该怎么做?谢谢 参考方案 hh:mm格式的时间值为字符串,因此不能对字符串进行有意义的求和。您应该将这些时间值转换为数字(strftime(%s)返回自1970-01-01以…

WPF MVVM中的动态TabControl - c#

我几周前开始使用WPF(在C#中),现在我需要一些高级帮助来使用tabcontrol。首先,我正在使用MVVM(模型视图ViewModel)模式来设计我的应用程序,并且我有一个约束,即试图不要在文件(初始化xaml文件)后面的代码中添加代码。现在,我的问题是在MainWindow视图(窗口)中动态创建新的tabItem,当单击按钮(例如“新建选项卡”按钮)时…

SQLite PDO查询未返回任何结果 - php

无论查询范围如何,都不会获得结果PHP:5.3SQLite3:3.6PDO:5.3.3我认为这应该是一个非常简单的过程,但是即使环顾四周,我仍然不知道为什么我得到0个结果。这是我的代码:<?php $sqlite = new PDO('sqlite:/example.db'); $result = $sqlite->query…