首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同时包含数组的多提交表单中插入项

如何在同时包含数组的多提交表单中插入项
EN

Stack Overflow用户
提问于 2013-02-28 19:14:08
回答 1查看 162关注 0票数 0

我想插入数据到一个单一的提交几个表。问题是表中的2个项目应该是几个项目(烹饪步骤,食谱的配料),这2个表中的项目数量是未知的,所以我将使用相同的ajax或任何脚本库。但是问题是插入到数据库中(db.add & db.save),他的两个表中的每个表都有一对多的关系(一个配方多个…。)

代码语言:javascript
复制
[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);
}
EN

回答 1

Stack Overflow用户

发布于 2013-02-28 22:53:38

之所以会出现这个错误,是因为您传入了一个intrusion记录数组,但仍然试图使用db.intrusion.Add(intrusion);来添加它们。你不能这么做。.Add()一次只允许放入一个(这解释了错误消息--放入整个数组是无效的)。

如果您实际上要添加多个入侵对象,则应该在该数组上执行foreach循环,如下所示:

代码语言:javascript
复制
foreach(var i in intrusion)
{
  db.intrusion.Add(i);
}

这就是你在评论中提到的错误。至于一对多的问题(您对不是很清楚),请确保“多”实体上的导航属性指向“一”实体,并确保“一个”实体上的“多”实体的集合添加了对“多”实体的引用。在这一点上,EF应该会处理剩下的事情。

如果我遗漏了什么,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15134050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档