希望我能正确设置,并且我已经在.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()
。
答案 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