我正在尝试将模型发布到 API 控制器操作以保存新的“PotluckItem”,它具有“Potluck”的父项和“Item”的子项。相关实体模型的相关部分如下:
public class Potluck
{
[Key]
public int Id { get; set; }
public string Title { get; set; }
public virtual ICollection<PotluckItem> PotluckItems { get; set; }
}
public class PotluckItem
{
[Key]
public int Id { get; set; }
public int ItemId { get; set; }
public int PotluckId { get; set; }
public int? GuestId { get; set; }
[ForeignKey("ItemId")]
public virtual Item Item { get; set; }
[ForeignKey("PotluckId")]
public virtual Potluck Potluck { get; set; }
[ForeignKey("GuestId")]
public virtual Guest? Guest { get; set; }
}
public class Item
{
[Key]
public int Id { get; set; }
public string Description { get; set; }
public int CategoryId { get; set; }
[ForeignKey("CategoryId")]
public virtual Category Category { get; set; }
}
当我发布我在前端创建的模型时,我收到验证错误,指出“Item”和“Potluck”字段是必需的。这是我发布的模型
{
"Id": 0,
"PotluckId": 3,
"ItemId": 5,
}
我的问题是处理这种情况的最佳做法是什么?最好专门为没有导航属性的发布/更新创建单独的模型吗?或者我是否错误地配置了实体模型?
理论上我想做一些事情,比如将新的 PotluckItem 添加到上下文并保存更改。获取完整的父实体并将项目添加到集合中然后保存整个东西会更好吗?