1

Iam在一段時間內遇到了一些麻煩,想要弄清楚如何從數據表(MSSQL 2008)中獲取數據。問題是這樣的。你有3個表:實體框架和(1到很多) - (多對1)(1 - * * - 1)關係

  • TABLE1(職位):作業ID,作業名
  • TABLE2(工人):WorkerID,WorkerName
  • 表3(Worker2Job):行ID,WorkerID,作業ID

我假設JOB可以由很多工作人員完成,所以我需要「Worker2Job」表。因此,我可以鍵入該JobID:1由WorkerID1和WorkerId2等...

現在使用實體框架我不知道如何獲取第一個工人(也沒有任何其他工作列表)的「WorkerName」屬性, 。

有什麼想法? Thx提前!

回答

1

你不需要任何特殊的RowIdWorker2Job。只需定義Worker2Job只有兩列:WorkerIdJobId並使這兩列成爲表格的組合主鍵。一旦將所有三個表添加到實體設計器中,它將自動查看多對多關係,並只創建兩個在模型中具有正確關係的實體。 Worker實體將有Jobs導航屬性,Job將具有Workers導航屬性。您將能夠編寫查詢,如:

var query = context.Jobs.Include("Worker").Where(j => j.JobId == someId); 

這樣的查詢將加載一個作業的所有相關人員,你將有機會獲得他們的名字。

+0

Thx!我不知道。我需要消化一些關於EntityFramework的書,因爲我想我錯過了許多功能。無論如何,我會嘗試你的解決方案(這可能是行之有效的)。同時我也想出了一個解決方案。我只是使用:worker =(從worker2job中的c,其中c.jobid = jobid選擇c.worker)......並且對我的娛樂來說,它工作正常......我會嘗試使用您的解決方案進行性能檢查。謝謝! – jackal 2011-06-12 13:31:25