2011-09-06 67 views
1

一個新的實體比方說,我有以下POCO實體:EF 4 POCO:保存與多個相關實體

public class CellPhone { 
    public Manufacturer PhoneManufacturer; 
    public ICollection<Color> PhoneColor { get; set; }   
    public string Version { get; set; } 
} 

public class Manufacturer { 
    public int ID { get; set;} 
    public string Name { get; set; } 
} 

public class Color { 
    public int ID { get; set;} 
    public string Name { get; set; } 

} 

我必須爲每個實體的對象集在我的ObjectContext類。

當創建一個新的CellPhone實例時,我通常都有製造商和顏色的ID,所以爲了將來自我的新CellPhone實例的引用添加到正確的製造商和顏色實體,我需要先使用相同的(查詢其ID的ObjectSet),設置CellPhone實例的相關導航屬性,然後保存新的CellPhone實例(將其添加到ObjectSet和SaveChanges())。

萬一我有2個以上相關實體像手機一類這個過程變得效率不高。

有沒有辦法更有效地做到這一點?即不查詢每個相關實體的數據庫?

謝謝你的幫助。

+0

您正在使用什麼版本的EF的? –

+0

實體框架4.1 –

回答

0

你可以保留模型類的外鍵屬性。那麼你不需要使用按ID查找。

public class CellPhone { 
    public Manufacturer PhoneManufacturer; 
    public int PhoneManufacturerId { get; set; }//foreignkey 
    public ICollection<Color> PhoneColor { get; set; }   
    public string Version { get; set; } 
} 

現在你可以像這樣,

CellPhone cellpHone=new CellPhone {PhoneManufacturerId =2,Version= ""}; 
    context.Attach(cellpHone); 
    context.SaveChanges(); 
+0

我如何處理集合?像這裏的ICollection