【问题标题】:EF 4 POCO: Saving a new entity with multiple related entitiesEF 4 POCO:保存具有多个相关实体的新实体
【发布时间】:2011-09-06 07:31:46
【问题描述】:

假设我有以下 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 类中的每个实体都有一个 ObjectSet。

在创建新的 CellPhone 实例时,我通常同时拥有制造商和颜色的 ID,因此为了将新 CellPhone 实例的引用添加到正确的制造商和颜色实体,我需要首先使用相同的上下文检索它们(查询其 ObjectSet 的 ID),设置 CellPhone 实例的相关导航属性,然后保存新的 CellPhone 实例(将其添加到 ObjectSet 和 SaveChanges())。

如果我有超过 2 个与 CellPhone 之类的类相关的实体,则此过程将变得无效。

有没有办法更有效地做到这一点?即不为每个相关实体查询数据库?

感谢您的帮助。

【问题讨论】:

  • 你用的是什么版本的EF?

标签: entity-framework poco entity-relationship


【解决方案1】:

您可以在模型类中保留外键属性。那么你就不需要使用 Find by 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();

【讨论】:

  • 我如何处理集合?就像这里的 ICollection
猜你喜欢
  • 1970-01-01
  • 2012-08-26
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多