如何在实体框架中绑定Product和Item?

发布于 2024-12-09 06:33:35 字数 512 浏览 0 评论 0原文

我已经绑定到班级,但没有绑定到另一个班级。我无法从项目调用产品:对象引用未设置为对象的实例。

怎么了?

如何优化这段代码?

foreach (var xd in excelData)
{
    Product p = new Product { 
        Name = xd.ProductName,
    };

    ctx.Products.Add(p);
    ctx.SaveChanges();

    Item t = new Item { 
        Product=p,
    };

    t.ProductId = t.Product.ProductId;
    ctx.Items.Add(t);
    ctx.SaveChanges();

    t.Product = ctx.Products.Where(c => c.ProductId == t.ProductId).FirstOrDefault();
    ctx.SaveChanges();
}

I have binding into the class, but not in another. I can`t call Product from Item: Object reference not set to an instance of an object.

Whats wrong?

How optimize this code?

foreach (var xd in excelData)
{
    Product p = new Product { 
        Name = xd.ProductName,
    };

    ctx.Products.Add(p);
    ctx.SaveChanges();

    Item t = new Item { 
        Product=p,
    };

    t.ProductId = t.Product.ProductId;
    ctx.Items.Add(t);
    ctx.SaveChanges();

    t.Product = ctx.Products.Where(c => c.ProductId == t.ProductId).FirstOrDefault();
    ctx.SaveChanges();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜味超标? 2024-12-16 06:33:35

假设您的 ProducId 和 ItemId是自动生成的,您可以通过一次调用SaveChanges` 来编写此内容,如下所示

foreach (var xd in excelData)
{
    Product p = new Product { 
        Name = xd.ProductName,
    };

    Item t = new Item { 
        Product=p,
    };

    ctx.Items.Add(t);    
}

ctx.SaveChanges();

Assuming your ProducId and ItemIdare auto generated you can write this with a single call toSaveChanges` as follows

foreach (var xd in excelData)
{
    Product p = new Product { 
        Name = xd.ProductName,
    };

    Item t = new Item { 
        Product=p,
    };

    ctx.Items.Add(t);    
}

ctx.SaveChanges();
明月松间行 2024-12-16 06:33:35

ObjectQuery.include 方法。指定要包含在查询结果中的相关对象。

ctx.Items.Include("Product").Where(c => c.SupplierId == id).ToList().ForEach(t =>
        {
            li.Add(new ShortPricesListItem()
            {
                Name = t.Product.Name,
            });
        });

ObjectQuery.Include Method. Specifies the related objects to include in the query results.

ctx.Items.Include("Product").Where(c => c.SupplierId == id).ToList().ForEach(t =>
        {
            li.Add(new ShortPricesListItem()
            {
                Name = t.Product.Name,
            });
        });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文