2011-09-06 50 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