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();
从错误消息判断,您的问题是关于SQLite而不是EF。
Completion
类上的public virtual Control Control { get; set; }
被视为未定义的Control表的外键。
我的猜测是,您不希望将Control引用保存到SQLite中。因此,在这种情况下,使SQLite忽略列
[SQLite.Ignore]
public virtual Control Control { get; set; }