我有以下模型:
[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,因为此类型不是 包含在上下文模型中。
接口显然丢失了,但是实际的类型在那里。
有什么区别?我该如何使第二个选项起作用?