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

C# UWP EF SQLite引用继承的类型引发异常,c#,entity-framework,sqlite,uwp,C#,Entity Framework,Sqlite,Uwp,我们希望在完成中引用继承的控件,因为一个控件有一个可能完成的列表,并保存所选完成。 我们的桌子是空的 public class Completion { public int CompletionId { get; set; } public string Text { get; set; } public virtual Control Control { get; set; } } public class Control : BaseControl { p

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

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; }
}
公共类完成
{
public int CompletionId{get;set;}
公共字符串文本{get;set;}
公共虚拟控件{get;set;}
}
公共类控件:BaseControl
{
public int ControlId{get;set;}
公共虚拟完成{get;set;}
公共虚拟ICollection完成{get;set;}
}
这些表的迁移是有效的,但是如果我们尝试向数据库添加一个完成项,就会出现异常

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

我们添加一个这样的补全

var completion=newcompletion{Text=“completion1”};
db.Completions.Add(完成);

db.SaveChanges()

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

完成
类上的
公共虚拟控件{get;set;}
将被视为未定义的控件表的外键

我猜您不想将控件引用保存到SQLite中。所以在这种情况下,让SQLite忽略该列

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

但是我们定义了一个控制表(我们有控制和完成),我们希望在完成中保存控制。一个控件有一个可能的完成列表和一个特定的完成列表(即所选的完成列表)