EF错误,当我不添加新键时,键“唯一键”的条目“值”重复

时间:2018-07-20 15:40:03

标签: entity-framework-6 many-to-many savechanges

这是一个基于表单(桌面)的应用程序,可与Entity Framework 6和MySQL一起使用,我具有与多对多关系相关的帖子和​​标签。

    modelBuilder.Entity<Post>()
    .HasMany<Tag>(p => p.Tags)
    .WithMany(p => p.Posts)
    .Map(mp =>
    {
        mp.ToTable("PostToTag");
        mp.MapLeftKey("PostId");
        mp.MapRightKey("TagId");
    });

在列表框中选择标记,以便将它们添加到如下所示的Post对象

List<Tag> _Tags = listBoxSelectedTags.Items.Cast<Tag>().ToList();

if (_Tags != null)
{
    _Tags.ForEach(t => post.Tags.Add(t));    
}

最后保存更改方法称为

db.Posts.Add(post);
db.SaveChanges();

问题是,当我创建新帖子时,例如选择帖子1和标签1(标签1已在“标签”表中定义)时,其保存成功,但是当我创建下一个帖子2和标签1时,我收到错误消息

{“密钥'IX_Name_Tag'的重复条目'Tag 1'”}

  • 当我关闭并加载表单并保存Post 2时,它将被保存而没有错误。
  • 我没有创建标签,为什么要尝试添加标签?它应该只是添加到关系表中。

所有标签已在“标签创建”表单中创建。标签名称设置为唯一。我也尝试过AddOrUpdate(post)

0 个答案:

没有答案