【发布时间】:2018-09-12 20:56:38
【问题描述】:
我在 .NET Core REST API 中遇到了 Entity Framework Core 的问题。
示例数据模型:
桌屋(id,名称) 桌房(id、houseId、名称)
一个房子可以有多个房间,一个房间只能在一个房子里。
我在删除房间时出现问题。每次用户请求删除房间时,我都会检查房间是否是房子里的最后一个房间,如果它是最后一个房间,我也会删除(空的)房子。
Room room = dbContext.Room
.Include(r => r.House).ThenInclude(h => h.Rooms)
.Where(r => r.id == id)
.SingleOrDefaultAsync();
if (room.House.Rooms.Count > 1) {
// other rooms are present
dbContext.Room.Remove(room);
} else {
// delete house if it is the last room
dbContext.House.Remove(room.House);
}
dbContext.SaveChanges();
问题是我们的 UI 不会在一次调用中删除房屋,它会为房屋中的每个房间调用删除房间(并期望房屋与最后一个房间一起自动删除)。这会导致问题。每个房间都加载房子实体,检查它是否是最后一个房间,识别其他房间,房间被删除,空房子仍然存在。
这无论如何都可以解决(所以空房子不会留下)例如有交易吗?
【问题讨论】:
-
这听起来更像
DbContext终身问题。
标签: c# .net-core entity-framework-core