Как связать продукт и товар в Entity Framework? - PullRequest
0 голосов
/ 12 октября 2011

У меня есть привязка в классе, но не в другом. Я не могу вызвать Product from Item: Ссылка на объект не установлена ​​на экземпляр объекта.

Что не так?

Как оптимизировать этот код?

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

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Принимая ваши ProducId и ItemId are auto generated you can write this with a single call to 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();
0 голосов
/ 14 октября 2011

Метод ObjectQuery.Include.Указывает связанные объекты для включения в результаты запроса.

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