繁体   English   中英

EF5删除实体

[英]EF5 delete entity

如何使用EF5删除实体? 我收到此错误:

The object cannot be deleted because it was not found in the ObjectStateManager.

当我尝试在我的DbSet上调用.Remove时。 谷歌搜索后,我尝试了

mycontext.Attach(entity)
mycontext.Remove(entity)

但是这样我得到:

An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.

那么,是否在ObjectStateManager中? :)

我的实体是这样的:

[Table("Words")]
public class Word : IWord
{
    [Key, Required]
    public int WordId { get; set; }

    [Required, StringLength(50)]
    public string Tag { get; set; }

    //Foreign Key
    public int VocabularyId { get; set; }

    //Navigation
    public virtual Vocabulary Vocabulary { get; set; }
    public virtual Language Language { get; set; }
    public virtual List<Translation> Translations { get; set; }

}

您可以考虑2种情况:

1.已连接的场景:您从数据库中加载实体并将其标记为已删除

var word = ctx.Words.Where(a=>a.WordId == wordId).First();
ctx.DeleteObject(word);
ctx.SaveChanges();

2.断开连接的场景:附加一个现有实体并将其标记为已删除

var word = new Word() { WordId = id };
ctx.Words.Attach(word);
ctx.DeleteObject(word);
ctx.SaveChanges();

第二种方法将帮助您避免不必要的数据库往返

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM