我正在尝试从文本框输入(int)插入一个房间到我的数据库,一个组合框显示数据库中的所有建筑物,组合框显示数据库中的所有楼层,我遇到了这个错误:< / p>
“IEntityChangeTracker的多个实例无法引用实体对象。”
并不太确定如何解决这个问题。
FormAddRoom.cs:
数据模型:
public class Building
{
public int BuildingID { get; set; }
public string Name { get; set; }
public Hotel Hotel { get; set; }
public virtual ICollection<Floor> Floors { get; set; }
}
public class Floor
{
public int FloorID { get; set; }
public string Name { get; set; }
public virtual Building Building { get; set; }
public virtual ICollection<Room> Rooms { get; set; }
}
public class RoomType
{
public int RoomTypeID { get; set; }
public string Name { get; set; }
}
Databasehandler方法:
public static List<Building> GetAllBuildingsByHotel(string hotel)
{
HotelDbContext context = new HotelDbContext();
var buildings = context.Buildings.Where(b => b.Hotel.Name == hotel).ToList();
return buildings;
}
public static List<Floor> GetAllFloorsFromBuilding(int buildingid)
{
HotelDbContext context = new HotelDbContext();
var floors = context.Floors.Where(f => f.Building.BuildingID == buildingid).ToList();
return floors;
}
public static int InsertRoom(Room room)
{
HotelDbContext context = new HotelDbContext();
context.Rooms.Add(room);
context.SaveChanges();
return room.RoomID;
}
答案 0 :(得分:2)
如果您正在使用跟踪实体(默认EF设置),则无法从上下文的一个实例获取对象并将其放入另一个实例中。您需要针对单个上下文实例执行所有工作。