2012-05-07 92 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

相关问题