Я новичок в EF, но постараюсь описать сценарий. У меня есть 3 таблицы в моей БД, а именно Рекомендация, Рекомендация и Вопрос. Каждая Рекомендация может иметь несколько Рекомендаций, а каждая Рекомендация может иметь несколько вопросов. Предположим, что у меня уже есть предопределенные вопросы в моей таблице вопросов.
У меня есть один сервис, который возвращает мне список вопросов, как показано ниже:
public List<Question> FetchQuestions(int categoryID)
{
using (Entities context = new Entities())
{
questions = context.Questions.Where(i => i.ID >= 0).ToList();
}
}
У меня есть еще одна служба, которая используется для создания Рекомендации и Рекомендации, код которой выглядит примерно так:
public void ManageRecommendation(RecommendationTopic recommendationTopic)
{
using (Entities context = new Entities())
{
context.AddObject("RecommendationTopics", recommendationTopic);
context.SaveChanges();
}
}
Мой код клиента выглядит следующим образом:
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);
}
Поскольку клиент выполняет 2 отдельных вызова службы, контекст будет отличаться для обоих вызовов. Когда я пытаюсь запустить это и проверить профилировщик EF, он не только генерирует запрос для вставки в Рекомендацию и Рекомендацию, но и в таблицу вопросов!
Я уверен, что это вызвано разным контекстом для обоих вызовов, поскольку, когда я выполняю похожий код в одном контексте, он работает так, как должен работать.
Вопрос в том, как мне заставить его работать в автономном сценарии?
Мой клиент может быть клиентом Silverlight, где мне нужно заполнить выпадающий Вопрос отдельным вызовом и сохранить тему Рекомендации в отдельном вызове. По этой причине я также использую сущности самопроверки.
Любой вклад приветствуется!
-Vinod