C# EF6-TPT-继承-数据库优先

C# EF6-TPT-继承-数据库优先,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,我有两张桌子,产品(我的基地)和离岸设施(按儿童) 我在ID字段上设置了外键,下面是此设置的屏幕截图: 在我的EDMX中,我导入了表,并将OffhelfItem设置为product类的成员,下面是该设置的屏幕截图: 但是,当我尝试使用此测试代码保存对象时: OffShelfItem osi = new OffShelfItem(); osi.WhenAdded = DateTime.Now; osi.LastModified = DateTim

我有两张桌子,产品(我的基地)和离岸设施(按儿童)

我在ID字段上设置了外键,下面是此设置的屏幕截图:

在我的EDMX中,我导入了表,并将OffhelfItem设置为product类的成员,下面是该设置的屏幕截图:

但是,当我尝试使用此测试代码保存对象时:

OffShelfItem osi = new OffShelfItem();
            osi.WhenAdded = DateTime.Now;
            osi.LastModified = DateTime.Now;
            osi.IsDeleted = false;
            osi.Title = "TEST ITEM";
            osi.RetailPrice = 9.99M;
            osi.DealerPrice = 7.99M;
            ent.Products.Add(osi);
            ent.SaveChanges();
我得到这个错误:

指定的架构无效。错误:应用程序代码.Model.ssdl(75,6): 错误0113:中的角色“AA_OffShelfItems”中的多重性无效 关系“FK_AA_OffShelfItems_AA_Products”。因为依赖者 角色是指密钥属性,即多重性的上限 从属角色的值必须为1


我觉得我真的很快就要让它发挥作用了,我只是需要帮助才能达到目的

id
必须是
AA_OffShelfItems
表上的主键

这里的解释很好:

[更新:]

然后,您可以通过扩展上下文访问
OffShelfItems
,如本答案所述:

比如:

context.Products.OfType<OffShelfItem>()
context.Products.OfType()
或:

部分类上下文
{
公共DbSet OffShelfItem{get;set;}
}

edmx中没有导航属性,这通常意味着外键没有定义。我以前在尝试将实体直接添加到edmx的xml中时看到过这个错误,忘记设置一些连接属性。在这种情况下,应该没有连接属性,我希望OffhelfItems类继承自product,而不是itOK的子对象,所以我已经这样做了,现在我可以成功运行上面的代码,我现在缺少的一个元素是如何从db上下文中获取我的OffShelfItems?现在,它正在将实体集名称设置为“Products”,用一个分部类扩展您的上下文类:(现在更新答案)
partial class Context
{
    public DbSet<OffShelfItem> OffShelfItem{ get; set; }
}