2012-05-07 7 views
0

Entity Manager (C#)에서 실제로 이해할 수없는 문제가 있습니다. 나는이 물건에 다소 새로운 것이므로 내 noobness와 함께 부담하십시오. ^^다른 ObjectContext 객체로 인해 InvalidOperationException이 발생했습니다.

UserQuestion (UserQuestionnaire와 Question 사이의 데이터베이스에 링크를 만드는 UserQuestion의 인스턴스를 만들고 UserQuestionnaire를 사용하여 사용자와 설문지).

그래서 여기에 문제의 코드는 다음 UserQuestionnaire = user_questionnaire 문 InvalidOperationException이를 시작하기 때문에,

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을 만들 때 오류가 받고 있어요 이유는 "두 개체 사이의 관계 다른 ObjectContext 개체에 연결되어 있으므로 정의 할 수 없습니다. "

내가 이해할 수없는 것은 단지 1 개의 컨텍스트를 사용한다는 것입니다. (내가 공유 한 코드의 첫 번째 줄)

다른 사람이 나를 도와 줄 수 있습니까? 더 할 일이 무엇인지 모르겠다. :

고마워!

+0

'BLL'이란 무엇입니까? – SLaks

+0

BLL은 Questionnaires.cs 및 Users.cs와 같은 "비즈니스"클래스 (BLL = Business Logic Layer)를 넣은 폴더입니다. – BPruvost

답변

0

BLL.Questionnaires.Get_Questionnaire_En_Cours()은 자체 ObjectContext를 사용합니다.

+0

예. 기본적으로이 메서드는 세션 변수에서 수행 할 질문지 ID를 읽은 다음 데이터베이스에 가서 "questionnaire"개체 (objectcontext 사용)를 가져 와서 반환합니다. 하지만 설문지가 다른 객체 컨텍스트로 처리 되더라도 결국 처리 할 객체는 user_questionnaire이고이 객체는 다른 objectcontext와 함께 사용되지 않기 때문에 이해할 수 없습니다. 어쨌든 어떻게해야합니까? – BPruvost

+1

@Tahedoz :'uq'는 다른 문맥에서'q'를 참조합니다. 기존 컨텍스트에서 작동하도록 BLL을 수정해야합니다. – SLaks

관련 문제