我有兩個實體:實體框架延遲加載
public class Product
{
[HiddenInput(DisplayValue=false)]
public int ProductID { get; set; }
[Required(ErrorMessage="Please enter a product name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a description")]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[Required]
[Range(0.01,double.MaxValue,ErrorMessage="Please enter positive price")]
public decimal Price { get; set; }
public Category Category { get; set; }
[HiddenInput(DisplayValue= false)]
public string ImageFileName { get; set; }
[HiddenInput(DisplayValue = false)]
public string ImageMimeType { get; set; }
}
和
public class Category
{
[HiddenInput(DisplayValue=false)]
public int CategoryID { get; set; }
[Required(ErrorMessage="Please enter a category name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a description")]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
public ICollection<Product> Products { get; set; }
[HiddenInput(DisplayValue= false)]
public string ImageFileName { get; set; }
[HiddenInput(DisplayValue = false)]
public string ImageMimeType { get; set; }
}
當我試圖讓產品這樣
Product product = repository.Products.FirstOrDefault(p => p.ProductID == id);
類別字段爲空。
沒有product.Category.Load()和repository.Products.Include(「Category」)...方法。
context.Configuration.LazyLoadingEnabled = false;
不會影響。 上下文是隔壁班
public class EFDbContext:DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
的目標我應該如何加載需要的領域?
謝謝
我剛剛嘗試以這種方式獲取產品對象: Product product =(from repository.Products.Include中的p「Category」)其中p。 ProductID == id select p).SingleOrDefault(); 和類別也被加載。這是可能的解決方案。但有趣的是,爲什麼類別爲空時,我使用第一種方式 – xwrs