私はEFの新人ですが、私はこのシナリオを説明するために最善を尽くします。私はMy DBに3つのテーブル、すなわちRecommendationTopic、Recommendation、Questionを持っています。各RecommendationTopicは複数のRecommendationを持つことができ、各Recommendationは複数の質問を持つことができます。質問テーブルには既に定義済みの質問があるとします。Entity Framework - nTierでの非結合の動作
私は私に以下のような質問のリストを返しつのサービスがあります。
public void ManageRecommendation(RecommendationTopic recommendationTopic)
{
using (Entities context = new Entities())
{
context.AddObject("RecommendationTopics", recommendationTopic);
context.SaveChanges();
}
}
:私はそのコードが以下のようなものである別のRecommendationTopicを作成するために使用されているサービスや勧告を持って
public List<Question> FetchQuestions(int categoryID)
{
using (Entities context = new Entities())
{
questions = context.Questions.Where(i => i.ID >= 0).ToList();
}
}
を私のクライアントコードは以下のようになります:
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プロファイラをチェックしようとすると、RecommendationTopicとRecommendationに挿入するクエリだけでなく、Questionテーブルも生成されます。
これは、単一のコンテキスト内で同様のコードを実行するときと同じように、両方の呼び出しで異なるコンテキストが原因で発生したと確信しています。
質問:接続されていないシナリオではどのように動作させるのですか?
私のクライアントは別の呼び出しで[質問]ドロップダウンを入力し、別の呼び出しで推奨事項のトピックを保存する必要があるSilverlightクライアントになる可能性があります。このため、私は自己追跡エンティティも使用しています。
-Vinod
あなたは私の一日を作っています!ブリリアント!できます! – Vinod