Linq返回行1的多个副本(count是正确的)



我试图从表中删除一些行,准备添加新数据(不能覆盖,因为不是固定数量的行)。我的LINQ语句返回正确的行数-但它只是一遍又一遍地重复第一行数据。还请注意- AsNoTracking()确实修复了初始问题,但我不能在初始查询完成后使用数据。所以这没有用。这是我的代码....

try
{
var Dtos = 
DbContext.Appointments
.Where(i => i.OutletId == currentOutletId)
.Where(i => i.Department == "S")
.Where(i => i.Date >= startOfWeekDate)
.Where(i => i.Date <= endOfWeekDate)
.ToList();
if (Dtos.Any())
{
DbContext.Appointments
.RemoveRange(Dtos);
await DbContext.SaveChangesAsync();
}
//Write my Add rows code here
await DbContext.SaveChangesAsync();
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
return true;
}

断点并悬停在dto

新的网站,所以我不能直接发布图像,抱歉。当我断点并将dto悬停在ToList之后时,我将返回这21行。这21行应该涵盖整个一周的时间框架。使用AsNoTracking,我可以毫无问题地使用一整周的时间。如果没有它,我将得到索引0的21个副本。

数据库中有四列被标记为键。我需要将[Key]属性添加到模型上的所有属性中。然后我必须在[Key]下面添加类型和顺序。一旦它知道这些键的顺序,它就会完美地进行枚举。再次感谢所有留言帮助我的人。