我很确定我已经知道答案,但我需要确认其他人。 这个问题涉及在实体框架中使用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的几个类强调我有效的编码,但不是可能的和不可能的。