首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF5删除实体

EF5删除实体
EN

Stack Overflow用户
提问于 2013-01-27 23:26:23
回答 1查看 1.9K关注 0票数 1

如何使用EF5删除实体?我得到了这个错误:

代码语言:javascript
复制
The object cannot be deleted because it was not found in the ObjectStateManager.

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

代码语言:javascript
复制
mycontext.Attach(entity)
mycontext.Remove(entity)

但通过这种方式,我得到了:

代码语言:javascript
复制
An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.

那么,它是不是在ObjectStateManager中?!:)

我的实体是这样的:

代码语言:javascript
复制
[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; }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-27 23:42:58

您可以考虑两种场景:

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

代码语言:javascript
复制
var word = ctx.Words.Where(a=>a.WordId == wordId).First();
ctx.DeleteObject(word);
ctx.SaveChanges();

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

代码语言:javascript
复制
var word = new Word() { WordId = id };
ctx.Words.Attach(word);
ctx.DeleteObject(word);
ctx.SaveChanges();

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14548874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档