1
你好,我有以下的標籤問題的兩個部分代碼。違反PRIMARY KEY約束''無法在對象中插入重複鍵''。重複的鍵值是(,)
public ActionResult Edit(int? id){
if (id == null)
{return new HttpStatusCodeResult(HttpStatusCode.BadRequest);}
Post post = db.Posts.Find(id);
StringBuilder tagList = new StringBuilder();
foreach (Tag tag in post.Tags)
{
tagList.AppendFormat("{0} ", tag.Name);
}
ViewBag.Tags = tagList.ToString();
if (post == null){return HttpNotFound();}
return View(post);}
第1部分在同一字段中添加行標籤。 標籤中相反行的第2部分。
public ActionResult Edit([Bind(Include = "Id,Title,DateTime,Body,Avtor")] Post post, string tags)
{if (ModelState.IsValid){
db.Entry(post).State = EntityState.Modified;
post.Tags.Clear();
tags = tags ?? string.Empty;
string[] tagNames = tags.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string tagName in tagNames)
{
post.Tags.Add(GetTag(tagName));
}
db.SaveChanges();
return RedirectToAction("Index");}
return View(post);}
問題行「post.Tags.Clear();」它不會刪除的連接,我得到一個錯誤:
"Violation of PRIMARY KEY constraint 'PK_PostsTags'. Cannot insert duplicate key in object 'dbo.PostsTags'. The duplicate key value is (1, 3).
The statement has been terminated."
行
「db.SaveChanges();」,至少我是這麼認爲的,雖然我沒有什麼經驗,具有明顯的信心說話。我看了其他案件,但它會幫助我找不到。請告訴我我哪裏出錯了?
這是一個標識列? –
它必須是根據錯誤的身份或PK列。錯誤很明顯地告訴你,你正試圖插入帶有重複鍵的記錄。如果您打算以這種方式插入,請從插入中移除ID列,它將自動生成新的標識值。 –
我必須要桌子和2把鑰匙postid tegid,這對於一堆桌子來說是必要的,很多很多。 – user3240336