检索包含'其他行的行'?

时间:2012-07-02 21:37:54

标签: sql-server entity-framework c#-4.0 stored-procedures ef-code-first

我是设计数据库的新手,而不是首先使用像Linq到实体代码这样的新功能,我想自己实现更低级别的东西。

如果我有一个Foo类,它可以包含任何其他数量的Foo,它可能看起来像这样:

class Foo
{
  int FooId;
  List<Foo> containedFoos;

...
}

假设Foo表看起来像

FooId, FooName, ContainingFooId (Foreign key to same table)

如果我先使用代码并检索了所有我的Foos,那么它们的containsFoos列表会自动填充给我。

我的问题是,这是在应用程序方面完成的(只需从Foo表中执行直接select,并在C#中编写逻辑以构造Foo,找到其包含的所有内容,构建列表等)

或者,SQL Server是否可以以更有用的方式返回数据?比如以某种方式将每个Foo及其包含的项目一起返回?

1 个答案:

答案 0 :(得分:1)

不,SQL Server不会返回这样的数据。您必须手动创建对象并填充它们以模仿Code First填充对象的方式。

仅凭这个原因使EF对项目一开始就非常有吸引力(对我而言)。它节省了很多时间。