如果房间名称不存在,我有这个代码插入房间:
write-host ('[INFO].['+$(Get-TimeStamp)+'] Message')
---> [INFO].[20183327_033349] Message
我的问题是这个函数在循环插入房间内调用。有时,循环中的项目具有相同的房间名称,我想即使我还没有调用SaveChanges,这一行:
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。
这不正确吗?我可以创建一个变量来跟踪插入的项目,但我认为它会被上下文跟踪,它会看到我之前插入了一个名字的房间?
答案 0 :(得分:1)
在_context.Rooms.Local
内,您可以找到添加/修改的实体,我认为这可能是您需要的。
有关本地数据的更多信息:http://www.entityframeworktutorial.net/EntityFramework4.3/local-data.aspx