我有2个班,SalesSubCategory和SalesCategory:实体框架6:相关的实体自动添加到父实体,尽管延迟加载被关闭
[Table("SALES.SubCategory")]
public class SalesSubCategory
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public int CategoryID { get; set; }
public string Name { get; set; }
[ForeignKey("CategoryID")]
public SalesCategory SalesCategory { get; set; }
}
[Table("SALES.Category")]
public class SalesCategory
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Name { get; set; }
}
此方法返回SalesSubCategories列表而不SalesCategory对象加载
public class TestController : Controller
{
private readonly MD_Context _context;
public TestController(MD_Context context)
{
_context = context;
}
public async Task<List<SalesSubCategory>> NoRelated()
{
var subCategories = await _context.SalesSubCategories.ToListAsync();
return subCategories;
}
此方法返回SalesSubCategories列表与加载的SalesCategory对象
public async Task<List<SalesSubCategory>> Related()
{
var subCategories = await _context.SalesSubCategories.ToListAsync();
var categories = await _context.SalesCategories.ToListAsync();
return subCategories;
}
MD_Context被配置为具有延迟加载禁用:
Configuration.LazyLoadingEnabled = false;
这是预期的行为?我的首选结果是没有预先加载SalesCategory对象实体。
谢谢。
神奇,谢谢! – Gmd3
所以环顾四周,看起来好像没有全局设置来适用于我的所有查询......痛苦的 – Gmd3
每个ORM都不同,我猜EntityFramework决定这种行为是因为他们认为人们会使用它们而不是仅仅提取结果转换为强类型对象,但也用于管理其查询结果对象。您可以使用Dapper.NET或某种类似于ORM的更加简化的功能来获得所需的行为,它将为您提供强大的类型对象,而无需使用数据库上下文的概念。 –