实体框架 - 我的DbContext上的SaveChanges()没有出现在我的智能感知中

时间:2017-08-29 15:13:00

标签: .net entity-framework-6

希望我能正确设置,并且我已经在.net核心中实现了这一点,但我目前的环境是.net 4.5x。 EF版本6.1.x。

我的问题是,我正在尝试创建一个Add方法,它将对DbContext的Add方法进行分类。但是,当我尝试从DbContext调用SaveChanges()时,intellisense告诉我它不存在。当我在.net核心中使用EF时,这种模式有效,在线参考告诉我它应该如何工作?

此外,我遇到了另一个stackoverflow帖子,提到了如何添加System.Data.Entity using语句 - 这包括在内但仍然不起作用。

代码:

public class ARepository : DbContext
{
    public RegRepCommodityRepository()
        : base("WhateverConnectionString")
    {}

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer<ARepository>(null);
        modelBuilder.Entity<SomeClass>().ToTable("dbo.SomeClass");
        base.OnModelCreating(modelBuilder);
    }

    private DbSet<SomeClass> MyContext { get; set; }

    public IEnumerable<SomeClass> SelectEverything()
    {
        return MyContext.ToList();
    }

    public void Add(MyClass addThisClass)
    {
        MyContext.Add(addThisClass);
        MyContext.SaveChanges(); // Intellisense tells me that SaveChanges does not exists
    }
}

*编辑*

只需致电this.SaveChanges()

4 个答案:

答案 0 :(得分:2)

SaveChanges()是 DbContext 的方法,而不是 DbSet 的方法。 DbSet表示一个表,DbContext可以表示您的数据库或其中的一部分。您似乎也尝试在dbContext类中实现存储库模式,这是不正确的,我建议您阅读this

答案 1 :(得分:1)

SaveChanges()不是静态方法,如果不实例化DbContext类的对象就无法调用它,可以改为调用它。

this.SaveChanges();

答案 2 :(得分:0)

尝试dis instantobj.SaveChanges();

答案 3 :(得分:0)

SaveChanges()DbContext的方法,而不是DbSet的方法。 DbSet表示一个表,DbContext可以表示您的数据库或其中的一部分。您似乎也试图在dbContext类中实现存储库模式,这是不正确的,请阅读它以获取更多详细信息Click Here