2012-05-07 93 views
0

我現在面臨一個問題,我真的不與實體管理器(C#)瞭解。我有點新東西,所以請忍受我的noobness ^^出現InvalidOperationException對象

我想創建一個UserQuestion的實例(這使得在表UserQuestionnaire和問題之間的數據庫的鏈接; UserQuestionnaire鏈接一個用戶和問卷)。

因此,這裏是有問題的代碼:

public static void Insert_Resultat_Question_BDD(Question q, double resultat) { 
    DataSourceContainer bdd = new DataSourceContainer(); // initializes the Context 
    User user = BLL.Users.Get_User_Connecté(); // Gets the connected user 
    Questionnaire questionnaire = BLL.Questionnaires.Get_Questionnaire_En_Cours(); // Gets the questionnaire being taken 
    UserQuestionnaire user_questionnaire = bdd.UserQuestionnaireSet.FirstOrDefault(i => i.User.id == user.id && i.Questionnaire.id == questionnaire.id); // Get the UserQuestionnaire object for the user and questionnaire above 
    UserQuestion uq = new UserQuestion { score = resultat * q.bareme, bareme = q.bareme, Question = q, UserQuestionnaire = user_questionnaire }; // Creates the object 
    bdd.AddToUserQuestionSet(uq); // Add it to the table 
    bdd.SaveChanges(); // Save 
} 

創建UserQuestion時,我得到一個錯誤,因爲UserQuestionnaire = user_questionnaire語句啓動一個InvalidOperationException,因爲: 「兩個對象之間的關係無法定義,因爲它們連接到不同的ObjectContext對象。「

我不明白的是我只使用1個上下文! (我分享的代碼中的第一行)

有人可以幫助我解決這個問題嗎?我不知道該怎麼辦:s

謝謝!

+0

什麼是BLL? – SLaks

+0

BLL是在我已經把「業務」類(BLL =業務邏輯層),像Questionnaires.cs和Users.cs – BPruvost

回答

0

聽起來像BLL.Questionnaires.Get_Questionnaire_En_Cours()使用它自己的ObjectContext。

+0

是它的文件夾。 基本上,該方法並從所採取的問卷的ID的會話變量中讀取,則進入數據庫以獲取「問卷」對象(使用的ObjectContext)並將其返回。 但我不理解,因爲即使問卷與另一個對象上下文處理,到底我處理的對象是user_questionnaire,而這一次不與其它ObjectContext的使用。 無論如何,我應該怎麼做呢? – BPruvost

+1

@Tahedoz:'uq'從其他上下文中引用'q'。您應該修改BLL以使用現有上下文。 – SLaks

相關問題