我正在使用带有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…