Entity framework 将相关实体附加到新实体,而不从数据库检索

Entity framework 将相关实体附加到新实体,而不从数据库检索,entity-framework,Entity Framework,本周我刚刚开始使用WebAPI,我正在努力解决一些我认为应该非常简单的问题,但还没有找到答案。也许我在用错误的术语搜索 对API的调用之一通过GUID传递。我需要创建一个新实体(使用实体框架)并将其中一个关系设置为新传入的GUID。此GUID是数据库中其他实体的ID 我正在努力通过关系附加实体,而不获取整个实体 比如说, public void DoWork(IList<Guid> userGuids) { Order order = new Order() // This

本周我刚刚开始使用WebAPI,我正在努力解决一些我认为应该非常简单的问题,但还没有找到答案。也许我在用错误的术语搜索

对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();
}
publicsvoiddowork(IListuserguids)
{
订单=新订单()//这是一个实体
{
CreateDate=DateTime。现在,
CreatedBy=“我”,
Items=(来自this.Model.Items中的i
其中i.Id==userGuid
选择i.ToList();
}
Model.Orders.Add(订单);
Model.SaveAll();
}

在上面的示例中,我必须执行一个数据库调用以将项目实体附加到订单。没有办法解决这个问题吗?当我只需要实体对象的ID(我已经有了)时,检索整个实体对象似乎是非常多余的

一种解决方案是存根实体,如下所述:

链接到引用的源博客:

从博客中剪下-应用于您的情况:

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

Product product = new Product {
 Name = “Bovril”,
 Category = category
};
ctx.AddToProducts(product);
ctx.SaveChanges();
这样(在本例中)就可以保存产品,而无需加载Category对象