我很確定我已經知道答案,但我需要確認其他人。 這個問題涉及在實體框架中使用DbSet:Code First。 (使用C#)DBSet是否需要直接訪問?
讓我們用這些小類爲例:
class TopClass
{
Public List<ExampleA> ListOne {get; set;}
Public List<ExampleB> ListTwo {get; set;}
//Other contents ...
}
class ExampleA
{
Public List<ExampleC> ListTree {get; set;}
//Other contents ...
}
class ExampleB
{
//Contents ...
}
class ExampleC
{
//Contents ...
}
所以TOPCLASS有一個名爲例A和例B類的列表,例A具有ExampleC的列表。
從的DbContext繼承的類可能是這樣的:
class ExampleContext : DbContext
{
public DbSet<TopClass> TopClasses {get; set}
//Other contents..
}
Cuttently,有隻DbSet是一個用於TOPCLASS。頂級對象可以保存到數據庫中,並且放入TopClass對象/ ExampleA對象列表中的ExampleA,ExampleB和ExampleC的對象也將被保存到數據庫中。如果我從數據庫加載TopClass對象,那麼列表中的所有其他對象也將被加載。換句話說,我可以訪問通過TopClass的對象保存到數據庫的其他對象。
現在有,我已經與我的collegue討論的問題是:
如果我要例A的對象的直接訪問,而無需加載TOPCLASS對象和所有其他相關的對象(也無需使用SQL編碼或lambda表達式),我是否需要ExampleA的DbSet?或者是否可以減少從DbSet加載到只包含我想要的對象?如果是的話,甚至可以在不加載TopClass的情況下加載ExampleA的對象?
我假設一些答案很明顯。我自己相信必須有一個DbSet才能直接訪問數據庫中該類的對象,而無需加載TopClass對象。但是,我需要知道,不相信,所以我要求你確認或否定(?)我的信念。至於我在互聯網上迄今閱讀的內容,有些文獻中,使用DbSet的幾個類強調我有效的編碼,但不是可能的和不可能的。