代码之家  ›  专栏  ›  技术社区  ›  Dave

实体框架如何添加到具有导航属性的实体

  •  9
  • Dave  · 技术社区  · 15 年前

    我想使用实体框架向SQL Server表添加一条记录。我的表的实体具有外键,因此具有这些字段的导航属性。添加新的记录/实体时,如何填充外键字段,因为它们不显示为实体的属性?

    1 回复  |  直到 12 年前
        1
  •  15
  •   yoozer8    12 年前

    最简单的方法是查询相关实体并使用导航属性:

    Product p = new Product{
       ID = 5,
       Name = "Bovril",
       Category = ctx.Categories.First( c => c.ID == 5)
    };
    ctx.AddToProducts(p);
    ctx.SaveChanges();
    

    如果要避免数据库查询,最简单的方法可能是使用存根实体,即。

    // this is a stub, a placeholder for the real entity
    Category c = new Category {ID = 5}; 
    // attach the stub to the context, similar to do a query
    // but without talking to the DB
    ctx.AttachTo("Categories", c);
    Product p = new Product{
       ID = 5,
       Name = "Bovril",
       Category = c
    };
    ctx.AddToProducts(p);
    ctx.SaveChanges();
    

    如果你想要更多关于这个存根技术的帮助,请查看 blog post 关于这个话题。