我得到一個主鍵衝突錯誤,當我嘗試了許多一對多的關係添加項目:與許多一對多的關係在實體框架中添加項目
我有兩個類 - 文章和其中有許多一對多關係標籤:
public class Article
{
public int ID { get; set; }
public string Text { get; set; }
public ICollection<Tag> Tags { get; set; }
}
public class Tag
{
[Key]
public string UrlSlug { get; set; }
public string Name { get; set; }
public ICollection<Article> Articles{ get; set; }
}
當我添加一個新的文章我允許用戶輸入任何標籤,然後我想創建一個新的標籤,如果尚未創建標籤如果標籤已存在,則將該標籤添加到Article對象的Tags集合中。
因此,當我創建新的Article對象我叫下面的功能:
public static Tag GetOrLoadTag(String tagStr)
{
string tagUrl = Tag.CreateTagUrl(tagStr);
var db = new SnippetContext();
var tagFromDb = from tagdummy in db.Tags.Include(x => x.Articles)
where tagdummy.UrlSlug == tagUrl
select tagdummy;
if (tagFromDb.FirstOrDefault() != null)
{ return tagFromDb.FirstOrDefault(); }
else
{
//create and send back a new Tag
}
}
這個功能基本上會檢查是否在數據庫中可用的標籤,如果是返回一個標籤,然後將其添加到Article對象的Tag集合使用article.Tags.Add()。
然而,當我嘗試這個使用下面的代碼保存我得到PRIMARY KEY約束錯誤的違規
db.Entry(article).State = EntityState.Modified;
db.SaveChanges();
我想不出我應該怎麼去只是創建文章之間的關係和已經存在的標籤。
請問您能否提供更多的細節和完整的代碼? –