C# EF6-TPT-继承-数据库优先
我有两张桌子,产品(我的基地)和离岸设施(按儿童) 我在ID字段上设置了外键,下面是此设置的屏幕截图: 在我的EDMX中,我导入了表,并将OffhelfItem设置为product类的成员,下面是该设置的屏幕截图: 但是,当我尝试使用此测试代码保存对象时: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
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; }
}