C# 实体框架6基类中的继承和多对多关系
我是EF的新手,无法找到解决问题的方法。我首先使用代码并实现了一些类(大约15个),这些类继承自基类:C# 实体框架6基类中的继承和多对多关系,c#,entity-framework,inheritance,many-to-many,table-per-type,C#,Entity Framework,Inheritance,Many To Many,Table Per Type,我是EF的新手,无法找到解决问题的方法。我首先使用代码并实现了一些类(大约15个),这些类继承自基类: Class Base { … } Class A : Base { … } Class B : Base { .. } Class Base { Public ICollection<Base> associations {get; set;} } 该模型实现为TPT。所以有一个表“Base”,每个派生类都有一个表,比如表“a”和表“B”。派生
Class Base {
…
}
Class A : Base {
…
}
Class B : Base {
..
}
Class Base {
Public ICollection<Base> associations {get; set;}
}
该模型实现为TPT。所以有一个表“Base”,每个派生类都有一个表,比如表“a”和表“B”。派生类只包含不在基类中的字段。。。现在,我想以多对多的形式将每个类相互链接。因此,类A或B中的对象可以与类A或B中的任何对象有许多关联。这在以下实现中非常有效:
Class Base {
Public ICollection<Base> con1 {get; set;}
Public ICollection<Base> con2 {get; set;}
}
类基{
公共ICollection con1{get;set;}
公共ICollection con2{get;set;}
}
我现在的问题是查询中的巨大开销。每个类都有许多字段,因此包含con1和con2的查询将连接每个派生类(并包含每个类的每个字段)。但我只需要ID(键)和派生类的类型。有没有解决这个问题的最佳方法 另一个问题是,如果基类中可能只有一个关联属性:
Class Base {
…
}
Class A : Base {
…
}
Class B : Base {
..
}
Class Base {
Public ICollection<Base> associations {get; set;}
}
类基{
公共ICollection关联{get;set;}
}
此关联应包含两个方向上的所有关联。因为我的意图不是像“B类包含产品”和“B类属于产品”这样的层级关系——它只是与对象之间的关联,没有重大意义或方向,比如“B类也与a类一起出售,并且……”
谢谢
Jacek“每个类都有许多字段,因此包含con1和con2的查询将连接每个派生类(并包含每个类的每个字段)。但我只需要ID(键)和派生类的类型”-请显示您的查询我的查询是通过EF自动生成的,如下所示:Var productsb=ProductB in _context.productsb.Include(“con1”).Include“con2”每个类都有许多字段,因此包含con1和con2的查询将连接每个派生类(并包含每个类的每个字段)。但我只需要ID(键)派生类的类型“-请告诉我们您的查询我的查询是通过EF自动生成的,如下所示:Var productsb=ProductB in _context.productsb.Include(“con1”).Include“con2”)