我想插入数据到一个单一的提交几个表。问题是表中的2个项目应该是几个项目(烹饪步骤,食谱的配料),这2个表中的项目数量是未知的,所以我将使用相同的ajax或任何脚本库。但是问题是插入到数据库中(db.add & db.save),他的两个表中的每个表都有一对多的关系(一个配方多个…。)
[HttpPost]
public ActionResult Create(Recipe recipe, Category category, Ingredient ingredient , intrusion [] intrusion )
{
int UserNumber = (int)Membership.GetUser().ProviderUserKey;
recipe.UserId = UserNumber;
recipe.AddedDate = DateTime.Now;
//intrusion intrusion [] =new List<intrusion> ;
//var entity=new intrusion();
//TryUpdateModel(entity ,new[] {"intrusion.IntrusionStep","intrusionId"});
if (ModelState.IsValid)
{
// var results = db.intrusion.Add(entity);
db.category.Add(category);
db.recipe.Add(recipe);
db.ingerdient.Add(ingredient);
db.intrusion.Add(intrusion);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(recipe);
}发布于 2013-02-28 22:53:38
之所以会出现这个错误,是因为您传入了一个intrusion记录数组,但仍然试图使用db.intrusion.Add(intrusion);来添加它们。你不能这么做。.Add()一次只允许放入一个(这解释了错误消息--放入整个数组是无效的)。
如果您实际上要添加多个入侵对象,则应该在该数组上执行foreach循环,如下所示:
foreach(var i in intrusion)
{
db.intrusion.Add(i);
}这就是你在评论中提到的错误。至于一对多的问题(您对不是很清楚),请确保“多”实体上的导航属性指向“一”实体,并确保“一个”实体上的“多”实体的集合添加了对“多”实体的引用。在这一点上,EF应该会处理剩下的事情。
如果我遗漏了什么,请告诉我。
https://stackoverflow.com/questions/15134050
复制相似问题