Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF核心,包括派生类型属性_C#_Entity Framework_Entity Framework Core_Ef Database First - Fatal编程技术网

C# EF核心,包括派生类型属性

C# EF核心,包括派生类型属性,c#,entity-framework,entity-framework-core,ef-database-first,C#,Entity Framework,Entity Framework Core,Ef Database First,我对特定的include语句有一个小问题。 我的数据结构如下: [Table("item")] public class Item { public int Id { get; set; } public string ItemCode { get; set; } ... } public abstract class DerivedItemAbstractBase : Item { [ForeignKey("ItemId")] pu

我对特定的
include
语句有一个小问题。 我的数据结构如下:

[Table("item")]
public class Item
{
  public int Id { get; set; }
  public string ItemCode { get; set; }
  ...
}

public abstract class DerivedItemAbstractBase : Item
{
  [ForeignKey("ItemId")]
  public List<Assignment> Assignments { get; set; }
  ...
}

[Table("item")]
public class DerivedItemA : DerivedItemAbstractBase
{
  ...
}

[Table("item")]
public class DerivedItemB : DerivedItemAbstractBase
{
  ...
}

public class ItemContext : DbContext
{
  public DbSet<Item> Items { get; set; }
  ...
}
这段代码编译得很好,是我在stackoverflow上发现的。 但是,执行此操作会导致出现异常,短消息
Invalid include
。 我不知道如何解决这个问题。 该项目是数据库优先的方法,因此我无法控制数据库。 所有项目都存储在同一个表中
item
。 我无法创建多个
dbset
,因为表中没有鉴别器列,而我 无法在代码中配置自定义鉴别器,因为它需要基于多个属性而不是单个属性进行鉴别

还有别的方法吗? 目前,我正在通过迭代所有
ItemContext.Items
来解决这个问题,然后对每个Items执行
.Select()
,并创建一个
新的DerivedItemA
。之后,我通过从
赋值
表迭代手动设置每个
赋值
。 但是,这种方法花费的时间太长,如果我能在初始查询中包含它,速度会快得多

public List<DerivedItemA> GetDerivedItemsA()
{
  var list = _context.Items
             .Include(x => (x as DerivedItemA).Assignments)
             .ToList();
}