0

在这种方法中,我将一个新项目(房间)插入到数据库中。该过程按预期运行。

但是,除此之外,每次我添加一个房间时,我都想添加一件家具作为初始件。每个家具类型的物品都有一个“RoomID”来指定它的位置。因此,Room 包含家具的集合。下面,我是数据库中的一件“主要”家具,将其添加到房间的家具集合中,并提交更改。房间被添加到数据库中,但 Furniture.RoomID 列仍然为空。

public void AddResidentToUniverse(int residentID, int universeID)
{
    Universe uni = _context.Universes.FirstOrDefault(u => u.UniverseID == universeID);
    Resident res = _context.Residents.FirstOrDefault(r=>r.ResidentID == residentID);

    if (uni != null && res!=null)
    {
        Room e = new Room();
        Furniture primary = _context.Furnitures.FirstOrDefault(p => p.FurnitureID == new FurnitureController().GetPrimary(universeID).FurnitureID);

        e.UniverseID = uni.UniverseID;
        e.RoomName = res.RootName;
        e.ResidentID = residentID;
        e.Expired = null;
        e.Furniture.Add(primary);
        uni.Rooms.Add(e);

        _context.SubmitChanges();
    }
}
4

2 回答 2

1

您需要添加一行来告诉您的数据库您要插入什么。例如,

uni.Rooms.InsertOnSubmit(Room object);
uni.Furniture.InsertOnSubmit(furniture piece);

在此之后,你可以写你的

uni.SubmitChanges();

线。

于 2013-06-06T17:51:50.080 回答
0

我终于咬紧牙关,删除了我的 dbml,删除并重新创建了表,并重新创建了我的 dbml。Furniture.RoomID 列现在可以正确更新。我知道,这是一种完全不令人满意、笨拙和蛮力的方法。

于 2013-06-08T04:46:37.630 回答