我是EF新手,但我會盡我所能來描述場景。我在我的數據庫中有3個表,即RecommendationTopic,Recommendation和Question。每個RecommendationTopic可以有多個建議書,每個建議書可能有多個問題。假設我的問題表中已經有了預定義的問題。實體框架 - nTier中的非連通行爲
我有一個服務,它返回我的問題清單如下圖所示:
public List<Question> FetchQuestions(int categoryID)
{
using (Entities context = new Entities())
{
questions = context.Questions.Where(i => i.ID >= 0).ToList();
}
}
我有它的代碼是一樣的東西下面,用來創建RecommendationTopic其他服務及建議:
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分析器時,它不僅生成查詢以插入RecommendationTopic和Recommendation,而且還生成問題表!
我確定這是由於兩個調用的不同上下文引起的,因爲當我在單個上下文中執行類似的代碼時,它會按照它的工作原理工作。
問題是,我該如何讓它在斷開連接的情況下工作?
我的客戶端可能是Silverlight客戶端,我需要用單獨的調用填充問題下拉菜單,並在另一個調用中保存推薦主題。出於這個原因,我也在使用自我跟蹤實體。
任何輸入讚賞! -Vinod
您先生已經讓我的一天!輝煌!有用! – Vinod