在EntityFramework中插入现有项目

时间:2014-12-22 14:36:21

标签: c# entity-framework entity-framework-6

考虑客户与客户之间的许多建模。产品。客户正试图购买id为146的产品。即产品已存在于数据库中。我需要做的就是将产品ID与数据库中的客户相关联。

enter image description here

理想情况下,代码应该将产品ID与Customer对象关联,而不是如下所示往返数据库:

    public async Task<int> BuyProduct()
    {
        using (ProductsContextContainer ctx = new ProductsContextContainer())
        {
            var newCustomer = new Customer()
            {
                Id = r.Next(),
                FirstName = "John Doe",
                Products = new List<Product>
                {
                    new Product()
                    {
                        Id = 146
                    }
                }
            };

            ctx.Customers.Add(newCustomer);
            return await ctx.SaveChangesAsync();
        }
    }

然而,与客户上面的代码一起尝试插入带有id。

的新产品

因此我必须明确地获取Products对象&amp;然后插入客户。

var boughtItem = ctx.Products.FirstOrDefault(p => p.Id == 146);
var newCustomer = new Customer()
{
    Id = r.Next(),
    FirstName = "John Doe",
    Products = new List<Product>
    {
        boughtItem
    }
};

在我的脑海中,我可以猜测我需要使用Entry方法来关联现有产品。但不太明白如何。你能帮忙吗?

0 个答案:

没有答案