2013-02-28 57 views
0

我想通過單個提交將數據插入幾張表中。 問題是2表應該是幾個項目(烹飪步驟,食譜配料) 這2個表中的項目#是未知的,所以我會使用相同的ajax或任何腳本庫。但問題是,在插入到數據庫(db.add & db.save)各 他的2個表都一對多的關係(一個配方很多... ...)。如何在包含數組的多提交表單中插入項目

[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

我不明白...因爲你可以使用一個foreach來運行實體數組,並添加上下文和db.SaveChanges只是在完成 – MayogaX 2013-02-28 11:22:17

+0

因爲它是現在我有這個Erorr味精。'System.Data.Entity.DbSetXXX.Models.intrusion> .AddXXX.Models.intrusion'的最佳重載方法匹配')有一些無效參數 – Danny 2013-02-28 11:56:27

回答

0

你得到錯誤因爲你傳遞了一組intrusion記錄,但仍嘗試使用db.intrusion.Add(intrusion);來添加它們。你不能那樣做。 .Add()只允許你一次做一個(這解釋了你的錯誤信息 - 放入整個數組是無效的)。

如果你真的要添加多個入侵對象,你實際上應該做一個foreach循環,陣列上進行如下:

foreach(var i in intrusion) 
{ 
    db.intrusion.Add(i); 
} 

那至於你在自己的評論中提到的錯誤去。至於一對多問題(,您對的描述不太清楚),請確保「many」實體上的導航屬性指向「one」實體,並確保「一個」實體上的「多」實體將該參考添加到「多」實體。英孚在此時應該照顧其餘的人。

讓我知道是否有什麼我錯過了。

+0

哎呀,忘記了索引。 – IronMan84 2013-02-28 15:10:49

+0

謝謝你的幫助。 我有一個diff錯誤, 不能隱式地將類型'XXX.Models.intrusion'轉換爲'int' 爲什麼它是一個int? – Danny 2013-02-28 15:47:22

+0

已編輯。請看一下。 – IronMan84 2013-02-28 15:49:17

相關問題