基于接口的模型的DbSet在Entity Framework Core中失败

时间:2019-07-15 14:47:04

标签: c# entity-framework-core

我有以下模型:

[Table(nameof(DataItem))]  
public partial class DataItem : IBasicDataItem
{
  public DataItem()
  {
    BasicQuantity = 5;
  }
}

我使用这种方法保存数据(插入或更新):

public async Task SaveListAsync<TDbType>(List<TDbType> dataList, bool isNew) where TDbType : class
{
   if (isNew)
   {
      await context.Set<TDbType>().AddRangeAsync(dataList);
   }
   else
   {
     //get the set
     var dbSet = context.Set<TDbType>().Local; //exception!
     //context().Set<TDbType>().AttachRange(dataList); //works
   }
   await context.SaveChangesAsync();
}

如果我将列表与AttachRange一起使用,它将按预期工作。

每当我使用实际的DbSet时,都会出现以下异常:

  

无法为IBasicDataItem创建DbSet,因为此类型不是   包含在上下文模型中。

接口显然丢失了,但是实际的类型在那里。

有什么区别?我该如何使第二个选项起作用?

0 个答案:

没有答案