2013-11-15 53 views
0

在我的數據庫中,我有一個名爲Department的表,名爲DepartmentID(PK)和SubdepartmentOfID(FK)的列。 SubdepartmentOfID被限制爲FK爲DepartmentID以基本創建分層類型關係。如何在一個呼叫中用前一個記錄的鍵插入記錄?

我在Entity Framework 6中想要做的是創建一個默認的子部門,其名稱與部門名稱相同,但爲了這樣做,我需要能夠在插入它之前設置SubdepartmentOfID我的背景,對吧?目前,我正在使用這個邏輯:

  • 創建實體,插入它,保存它(最終在實體中填充DepartmentID鍵)。
  • 創建用於部來看另一個實體,並設置其屬性SubdepartmentOfID等同於以前保存的實體,將其保存

我覺得這可以在一個電話來完成。它可以?

+0

存儲過程不是一個選項嗎? – mrtig

+0

你在'Department'實體中有'SubDepartments'的集合嗎? –

+0

另外想到的是,頂級'Departments'將具有'NULL'' SubdepartmentOfID'。這不是一個標準化的結構。將這些關係放在另一個表格中可能更容易(也更規範化)。那麼你將不得不在EF 6中做一些重寫,以保持它的漂亮和乾淨。 –

回答

2

這個答案假定:

  • 您正在使用的數據庫第一(使用設計器),而不是先編寫
  • 您有一個名爲Department有以下的列表

    DepartmentID 
    SubDepartmentID 
    DepartmentName 
    

我認爲你可以做到這一點。

var department = new Department 
        { 
          DepartmentName = "D1" 
        }; 

var subDepartment = new Department 
        { 
         DepartmentName = "D1" 
        }; 

department.Department = subDepartment; 
context.Departments.Add(department); 

context.SaveChanges(); 

實體框架現在會處理自動生成的ID並將子部門關聯到部門。

+0

此代碼需要重大編輯 –

+0

所以請建議一些編輯,這對我和任何其他人都有幫助。 –

+0

我認爲這是我在腦海裏想到的。 EF會照顧鑰匙嗎? – Sinaesthetic