2017-08-29 55 views
0

希望我已经正确设置了一些东西,并且我在.net core中实现了它,但是我的当前环境是.net 4.5x。 EF版本6.1.x.我的DbContext实体框架 - SaveChanges()没有出现在我的智能感知

我的问题是,我想创建一个Add方法,它将类DbContext的Add方法。但是,当我尝试从DbContext中调用SaveChanges()时,intellisense告诉我它不存在。当我在.net内核中使用EF时,这种模式起作用,并且在线引用告诉我它也应该如何工作?

此外,我遇到另一个stackoverflow后提及如何System.Data.Entity使用声明需要添加 - 这是包括但仍然无法正常工作。

代码:

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()

回答

1

SaveChanges()不是静态方法,你不能在没有实例化类的对象的情况下调用它,你可以调用它。

this.SaveChanges(); 
+0

是的。被卡住了这么久,我觉得有点愚蠢。 – mche

2

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

+0

太好了。感谢这篇文章。 – mche

0

尝试dis instantobj.SaveChanges();

+0

这可以添加评论。请解释你的答案。 – Ironic

+1

如果不实例化DbContext的对象,则不能调用它。首先,您创建并调用它。 –

0

SaveChanges()DbContext而不是DbSet的方法。 DbSet代表一张表,DbContext可能代表您的数据库或其中的一部分。它似乎也是你试图在你的dbContext类中实施存储库模式,它是不正确的,阅读它的更多细节Click Here

相关问题