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