1

我这周刚刚开始使用 Web API,我正在努力解决我认为应该很简单的事情,但还没有找到答案。也许我正在使用错误的术语进行搜索。

对 API 的调用之一通过 GUID。我需要创建一个新实体(使用实体框架)并将其中一个关系设置为这个新传入的 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(无论如何我已经拥有了!)时,检索整个实体对象似乎非常多余!

4

1 回答 1

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();

这样(在示例中)产品被保存而无需加载 Category 对象。

于 2013-01-29T18:15:00.097 回答