将相关实体附加到新实体,而无需从数据库中检索

时间:2013-01-29 16:32:00

标签: entity-framework

本周我刚刚开始使用Web API,我正在努力解决一些我觉得应该很简单但尚未找到答案的问题。也许我正在使用错误的术语进行搜索。

对API的一次调用通过GUID传递。我需要创建一个新实体(使用Entity Framework)并将其中一个关系设置为GUID中新传递的。此GUID是数据库中不同实体的ID。

我正在努力通过关系附加实体而不会获取整个实体。

例如,

public void DoWork(IList<Guid> userGuids)
{
     Order order = new Order() // This is an entity
     {
         CreateDate = DateTime.Now,
         CreatedBy = "Me",
         Items = (from i in this.Model.Items
                      where i.Id == userGuid
                      select i).ToList<Item>();
     }

     Model.Orders.Add(order);
     Model.SaveAll();
}

在上面,我必须进行数据库调用以将Item实体附加到Order。这有什么办法吗?当我只需要他们的ID时(我已经拥有了ID),这似乎非常冗余以检索整个实体对象!)

1 个答案:

答案 0 :(得分:2)

一个解决方案是在此处询问的存根实体:Create new EF object with foreign key reference without loading whole rereference object

链接到引用的源博客:http://blogs.msdn.com/b/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx

从博客剪辑 - 适用于您的情况:

Category category = new Category { ID = 5};
ctx.AttachTo(“Categories”,category);

Product product = new Product {
 Name = “Bovril”,
 Category = category
};
ctx.AddToProducts(product);
ctx.SaveChanges();

这种方式(在示例中)保存了Product而没有加载Category对象。