我想通过一次提交将数据插入到几个表中。 问题是表中的2应该是几个项目(烹饪步骤,配方的成分) 这2个表中的项目数是未知的,所以我将使用相同的ajax或任何脚本Lib。但问题是插入db(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);
}
答案 0 :(得分:0)
您收到该错误是因为您传递了一组intrusion
条记录,但仍尝试使用db.intrusion.Add(intrusion);
添加它们。你不能这样做。 .Add()
只允许您一次执行一个(这解释了您的错误消息 - 放入整个数组无效)。
如果您实际上是在添加多个入侵对象,那么您应该在该数组上执行foreach
循环,如下所示:
foreach(var i in intrusion)
{
db.intrusion.Add(i);
}
就你在评论中提到的错误而言。至于一对多的问题(你还不是很清楚),请确保“many”实体上的导航属性指向“one”实体,并制作确保“one”实体上的“many”实体的集合添加了对“many”实体的引用。 EF应该在那时照顾其余部分。
让我知道是否有一些我错过的东西。