2017-08-29 32 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

相關問題