2012-09-19 25 views
0

我試圖在DataGridView中顯示來自兩個相關實體的數據。我知道我可以只選擇這樣的價值觀:將DataGridView綁定到來自不同實體的數據

from tasks in context.TaskSettings 
    join train in context.Trainings on tasks.TrainingID equals train.TrainingID 
    where tasks.TrainingID == task 
      select new {TrainingName = train.TrainingName, 
         DriversNeeded = tasks.DriversNeeded, 
         EmployeesPerSupervisor = tasks.EmployeesPerSupervisor}; 

但是,這給了我永恆不變的價值觀和我的興趣是表示一個DataGridView的值,以便用戶可以編輯的值,然後單擊保存更改。

我已經試過這另一種方法

ObjectQuery<TaskSetting> trainingSettings = 
    (ObjectQuery<TaskSetting>)context.TaskSettings.Where(t => t.TrainingID == task); 
dgvTask.DataSource = trainingSettings.Execute(MergeOption.AppendOnly); 

但只是把整個培訓實體單列

我想是可以的,至少,從一開始的集訓培訓實體仍然可以相應地更改和更新數據上下文。我想發佈圖片更有幫助,但這是我的第一個問題。任何幫助將不勝感激!

回答

1

爲什麼不更好地實施Mediator Pattern,以便通過將兩個實體綁定到介體上的單個屬性來管理內部編輯。然後,將DataGridView綁定到Mediator,並讓其管理各個實體上的自定義適當更新。

+0

我很新的實體框架,我不知道如何使用中介模式。我試圖用「自定義對象」做類似的事情。但是我陷入了映射回實體部分。 – Yoinazek

+0

@Yoinazek基本上我在談論一箇中間的C#類,它不是一個實體,就像它是一樣的。爲什麼?爲您的UI提供對來自不同實體的兩個屬性的綁定。 –

+0

而這個中產階級將負責獲取/設置值並將映射返回到實體。得到它了。只需要弄清楚怎麼做,嘿嘿。謝謝 – Yoinazek

相關問題