如果房间名称尚不存在,我有此代码可以插入房间:
private bool TryGetRoom(Room room, out int? roomId)
{
bool success = false;
roomId = null;
if (room != null)
{
// Check if room already exists
var foundRoom = _context.Rooms.Where(rm => String.Equals(rm.Name, room.Name, StringComparison.OrdinalIgnoreCase)).SingleOrDefault();
if (foundRoom == null)
{
// Create room
var roomToAdd = _mapper.Map<dataModels.Room>(room);
roomToAdd.CompanyId = _context.TenantId;
_context.Add(roomToAdd);
roomId = roomToAdd.Id;
success = true;
}
else
{
roomId = foundRoom.Id;
success = true;
}
}
return success;
}
我的问题是这个函数在循环插入房间内调用。有时,循环中的项目具有相同的房间名称,我想即使我还没有调用SaveChanges,这一行:
var foundRoom = _context.Rooms.Where(rm => String.Equals(rm.Name, room.Name, StringComparison.OrdinalIgnoreCase)).SingleOrDefault();
将看到我之前添加的房间,即使循环完成后将调用SaveChanges。
这不对吗?我当然可以创建一个变量来跟踪插入的项目,但我认为它会被上下文跟踪,它会看到我之前插入了一个有名称的房间?