Je suis nouveau à EF mais je vais essayer de mon mieux pour décrire le scénario. J'ai 3 tables dans Mon DB à savoirTopique, Recommandation et Question. Chaque RecommandationTopic peut avoir plusieurs Recommandations et chaque Recommandation peut avoir plusieurs questions. Supposons que j'ai déjà des questions prédéfinies dans mon tableau de questions.Entity Framework - Disconnexted Behavior dans nTier
J'ai un service qui me renvoie la liste des questions comme ci-dessous:
public List<Question> FetchQuestions(int categoryID)
{
using (Entities context = new Entities())
{
questions = context.Questions.Where(i => i.ID >= 0).ToList();
}
}
J'ai un autre service qui est utilisé pour créer RecommendationTopic et la recommandation dont le code est quelque chose comme ci-dessous:
public void ManageRecommendation(RecommendationTopic recommendationTopic)
{
using (Entities context = new Entities())
{
context.AddObject("RecommendationTopics", recommendationTopic);
context.SaveChanges();
}
}
Mon code client ressemble à ci-dessous:
List<Question> questions;
using (QuestionServiceClient client = new QuestionServiceClient())
{
questions = client.FetchQuestions();
}
using (RecommendationServiceClient client = new RecommendationServiceClient())
{
RecommendationTopic rTopic = new RecommendationTopic();
rTopic.CategoryID = 3;
rTopic.Name = "Topic From Client";
Recommendation rCom = new Recommendation();
rCom.Text = "Dont!";
rCom.RecommendationTopic = rTopic;
rCom.ConditionText = "Some condition";
rCom.Questions.Add(questions[0]);
rCom.Questions.Add(questions[1]);
client.ManageRecommendation(rTopic);
}
Depuis le client fait 2 appels de service distincts, le contexte serait différent pour les deux appels. Lorsque j'essaie d'exécuter ceci et de vérifier le profileur EF, il génère non seulement une requête à insérer dans RecommendationTopic et Recommendation, mais aussi Table des questions!
Je suis sûr que cela est dû à un contexte différent pour les deux appels, car lorsque j'exécute un code similaire dans un seul contexte, cela fonctionne comme il est censé fonctionner.
La question est, comment puis-je le faire fonctionner dans un scénario déconnecté?
Mon client peut être un client Silverlight où je dois remplir une question déroulante avec un appel distinct et enregistrer la rubrique Recommandation dans un appel distinct. Pour cette raison, j'utilise également des entités de suivi de moi-même.
Toute saisie appréciée! -Vinod
Vous avez fait ma journée! Brillant! Ça marche! – Vinod