. 게으른 로딩하지? 마이크로 소프트 비주얼 C# 2010 익스프레스, 엔티티 프레임 워크 기능 CTP4를 사용
나는 Scott Gu's blog에 따라 작은 뭔가 첫 번째 코드와 EF4을 시도했다. 그러나 개체를 검색 할 때 컬렉션이 초기화되지 않은 것으로 보입니다. 범주에 제품을 추가 할 때 null 참조 예외가 발생합니다. 필자가 보았던 모든 예제에서 컬렉션은 명시 적으로 초기화되지 않습니다. 내가 뭘 놓치고 있니?using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var _db = new Northwind();
var c = new Category { CategoryName = "Testcat" };
_db.Categories.Add(c);
_db.SaveChanges();
var c2 = _db.Categories.SingleOrDefault(i => i.CategoryId==c.CategoryId);
var pr = new Product { ProductName = "testprod" };
c2.Products.Add(pr); // <--- Null reference for Products
_db.SaveChanges();
Console.WriteLine("Done...");
Console.ReadKey();
}
}
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public virtual Category Category { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
public class Northwind : DbContext
{
public DbSet<Category> Categories { get; set; }
public DbSet<Product> Products { get; set; }
}
}
는 최대한 멀리 볼 수있는 문제입니다 당신의 질의는'Category'에 대해 null을 반환 할 것이기 때문에'c2'는 null입니다. 자동 생성 된 아이디로 –
DbContext지도 ID입니다. savechanges() 후에 Id가 채워진다. C2는 null이 아닙니다 (확인). 그러나 제품은 null입니다. –
'_db.Categories.Include ("Products") 명시 적 로딩을 시도 할 수 있습니다. SingleOrDefault (...)'. –