【问题标题】:Entity Framework - SaveChanges() on my DbContext is not appearing in my intellisense实体框架 - 我的 DbContext 上的 SaveChanges() 没有出现在我的智能感知中
【发布时间】:2017-08-29 15:12:59
【问题描述】:

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

我的问题是,我正在尝试创建一个 Add 方法,该方法将对 DbContext 的 Add 方法进行分类。但是,当我尝试从 DbContext 调用 SaveChanges() 时,智能感知告诉我它不存在。当我在 .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()

【问题讨论】:

    标签: .net entity-framework-6


    【解决方案1】:

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

    【讨论】:

    • 太棒了。感谢您的文章。
    【解决方案2】:

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

    this.SaveChanges();
    

    【讨论】:

    • 是的。卡了这么久,感觉有点傻。
    【解决方案3】:

    试试dis 即时obj.SaveChanges();

    【讨论】:

    • 这可以在评论中添加。请解释你的答案。
    • 如果不实例化 DbContext 的对象就无法调用它......首先你创建然后调用它......
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2012-03-24
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      相关资源
      最近更新 更多