我有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的更加簡化的功能來獲得所需的行爲,它將爲您提供強大的類型對象,而無需使用數據庫上下文的概念。 –