UWP EF SQLite对继承类型的引用引发异常

本文关键字:引用 异常 类型 EF SQLite 继承 UWP | 更新日期: 2023-09-27 18:26:04

我们希望在完成中引用继承的控件,因为一个控件有一个可能的完成列表,并保存所选的完成。我们的桌子是

public class Completion
{
    public int CompletionId { get; set; }
    public string Text { get; set; }
    public virtual Control Control { get; set; }
}
public class Control : BaseControl
{
    public int ControlId { get; set; }
    public virtual Completion Completion { get; set; }
    public virtual ICollection<Completion> Completions { get; set; }
}

这些表的迁移是有效的,但如果我们试图向数据库中添加一个Completion,我们会得到异常

{"SQLite错误1:'外键不匹配-''"完成''"引用''"控制''"'"}

我们添加一个类似于的完成

var completion = new Completion { Text = "completion1" }; db.Completions.Add(completion); db.SaveChanges();

UWP EF SQLite对继承类型的引用引发异常

从错误消息判断,您的问题是关于SQLite而不是EF。

Completion类上的public virtual Control Control { get; set; }被视为未定义的Control表的外键。

我的猜测是,您不希望将Control引用保存到SQLite中。因此,在这种情况下,使SQLite忽略列

[SQLite.Ignore]
public virtual Control Control { get; set; }