2013-12-20 37 views
0

對於實體框架,我仍然有點新,所以我仍在通過一些基礎知識。我有一個數據訪問層正在完成大部分繁重的工作。然而,當我學習EF和上下文時,我意識到維護一個上下文是多麼重要,特別是當你試圖更新實體對象實例的子代時。所以我的計劃是在前端創建上下文並將其傳遞到數據層。將實體上下文傳遞給類構造函數

前端:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     supplyEntities ctx = new supplyEntities(); 
     GroupsClass gc = new GroupsClass(ctx); 
    } 
} 

數據層:

public class GroupsClass 
{ 
    private supplyEntities context; 

    public GroupsClass(supplyEntities ctx) 
    { 
     context = ctx; 
    } 

    public List<group> GetAllGroups() 
    { 
     context.do stuff; 
    } 
} 

上的 「一個字段初始不能引用非靜態字段,方法或屬性」 它的錯誤。我錯過了什麼?或者,我應該以不同的方式來做這件事嗎?

+0

如果您雙擊該錯誤,它會將您帶到哪裏?我看不出你是如何從你顯示的代碼中得到這個錯誤的...... – NDJ

+0

這段代碼看起來不像現在會拋出錯誤。也許這是一種情況,它在'GroupsClass'上尋找空的構造函數? –

+0

當我在頁面加載中創建GroupsClass的實例時,ctx發生錯誤。 – Jeremy

回答

1

這個錯誤很奇怪,它講述了靜態方法中發生的事情。在靜態方法中運行時,不能使用實例級成員,這就是此錯誤的含義。你能粘貼錯誤報告的確切代碼嗎?

除了錯誤之外,還有一條建議。不要在前端創建數據上下文。這意味着前端與上下文不可逆轉地聯繫在一起。沒有辦法嘲笑它,沒有辦法自動測試它,沒有辦法用任何其他實現來代替它。

+0

哪種方法是靜態的?我沒有將其定義爲明確靜態的。 – Jeremy

+0

這是我的問題:哪種方法是靜態的?所以,錯誤發生在靜態代碼中。報告錯誤的確切線是什麼? –

+0

我明白你來自哪裏,而不是在前端創建數據上下文。我實際上已經避免爲整個項目做這件事。然而,我只是遇到了太多與錯誤的上下文有關的問題,並試圖在所有實體對象數據類之間進行全部的操作,它似乎讓生活更輕鬆。我可以創建一個只有一個屬性的上下文創建類。然後我創建該類的一個實例,並使用該實例傳遞給其他類... – Jeremy

相關問題