这是一个控制台应用程序,我只是在试验和学习。 问题是我不明白如何将特定位置的数据添加到数据库。
以下是我的模特:
public class Entity
{
public virtual int entityId { get; set; }
public virtual string name { get; set; }
public virtual int lvl { get; set; }
public virtual double hp { get; set; }
public virtual int maxhp { get; set; }
public virtual Inventory inventory { get; set; }
public virtual Equipment equipment { get; set; }
public virtual Skill skills { get; set; }
}
public class Inventory
{
[Key]
public virtual int invId { get; set; }
public virtual List<Item> items { get; set; }
}
public class Item
{
public virtual int itemId { get; set; }
public virtual string itemName { get; set; }
public virtual string type {get;set;}
}
public class Skill
{
public virtual int skillId { get; set; }
public virtual string skillName { get; set; }
public virtual string type { get; set; }
}
public class Equipment
{
public virtual int equipmentId { get; set; }
public virtual Item helmet { get; set; }
public virtual Item body { get; set; }
public virtual Item legs { get; set; }
public virtual Item weapon { get; set; }
}
我想将新项目添加到与库存有多对一关系的项目表中。 我想将数据添加到特定库存。 我的问题是,如果我这样做
Inventory inv = db.Entities.Where(e => e.entityId == eId).FirstOrDefault<Entity>().inventory;
inv.items.Add(item);
//db.Items.Add(item);
db.SaveChanges();
然后该项目不会被添加
如果我这样做
Inventory inv = db.Entities.Where(e => e.entityId == eId).FirstOrDefault<Entity>().inventory;
//inv.items.Add(item);
db.Items.Add(item);
db.SaveChanges();
然后该项目不会被分配到正确的库存,而Inventory_InvId将为NULL
但如果我这样做
Inventory inv = db.Entities.Where(e => e.entityId == eId).FirstOrDefault<Entity>().inventory;
inv.items.Add(item);
db.Items.Add(item);
db.SaveChanges();
然后将正确添加项目。 谁能解释为什么它会像这样? 也有人能告诉我在特定地方添加物品的正确方法吗?