context.Entry()在哪里?

31

我通过阅读这篇文章和很多其他文章编写了自己的上下文,但是它们都没有解释context.Entry(obj)定义在哪里,我的意思是即使阅读这篇文章,我也无法理解如何实现这种方法。我得到了以下错误:

Error 36 'Domain.Entities.OurWebSiteContext'不包含对'Entry'的定义,也找不到接受'type Domain.Entities.OurWebSiteContext'作为第一个参数的扩展方法'Entry'(是否缺少使用指令或程序集引用?)

请有人帮帮我。

编辑 >>

 public class OurWebSiteContext : DbContext
    {
        public OurWebSiteContext(string connString)
            : base(connString)
        {

        }

        public DbSet<Article> Articles { get; set; }
        public DbSet<Category> Categories { get; set; }
        public DbSet<Comment> Comments { get; set; }
    }

你是否确实从 DbContext 派生了 OurWebSiteContextpublic class OurWebSiteContext : DbContextEntryDbContext 的公共方法。如果你的应用程序理解 DbContext,那么它也应该知道 Entry - Slauma
我编辑了我的问题,现在你可以看到OurWebSiteContext的定义。 - Babak Fakhriloo
1个回答

45

可能已经太晚回答了,但这可能有助于其他人。EF 4.0使用ObjectContext类,而版本4.1使用DbContext类,在其中定义了像Set<T>Entry之类的方法。在版本 4.0 中,您可以执行以下操作:

DatabaseContext _context = new DatabaseContext();
_context.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified);

在4.1版本中,它的做法是:

_context.Entry(entity).State = System.Data.EntityState.Modified;

这里有一个有用的SO链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接