【问题标题】:Getting collection from foreign key从外键获取集合
【发布时间】:2012-08-29 09:07:01
【问题描述】:

在这样的两个表中

table Person
{
    int Id -> primary key
    varchar name
    varchar nick
    int GroupId -> foreign key
}

table Group
{
    int Id -> primary key
    varchar name
}

如果我使用

var result = (from c in myDataBase.Group
             select c).ToList<Group>();

我只得到组列表,但字段 System.Data.Objects.DataClasses.EntityCollection&lt;Person&gt; 为空。我应该如何更改查询以获取人员列表?

【问题讨论】:

    标签: c# sql-server entity-framework linq-to-entities


    【解决方案1】:

    不清楚System.Data.Objects.DataClasses.EntityCollection&lt;Person&gt; 必须在哪里,但我推测您正在搜索Inner join

      var query = from person in people
                    join group in groups on person.GroupId equals group .Id
                    select new {.. something... };
    

    假设你在某个地方有 peoplePerson 类型的集合),并希望从该集合中查找所有人员以及相关 Group 中的匹配信息。

    如果这不是您的要求,请澄清。

    【讨论】:

    • 嗯,为什么我得到不正确的结果?我的意思是人员集合中的计数器仍然为 0(sql 管理工作室中的相同查询显示正确的结果,即一行)。
    • 当我第一次使用它时,我得到了 counter = 1.. 但现在出了点问题。数据库相同,行相同
    • @Saint:您可以使用 LinqPAD 并在其中运行您的 LINQ 查询。之后你可以切换到 SQL 选项卡,看看 LINQ-TO-SQL 查询实际生成了什么 SQL,自然可以和你说的 SQL 查询进行比较。
    【解决方案2】:

    我解决了问题:

    myDataBase.Group.Include("Person").Select(a => a).ToList();
    

    顺便说一句:在 linq 查询 from...where...select 中,Include() 的等价物是什么?

    【讨论】:

    • from a in myDataBase.Group.Include("Person") select a; 是等价的。
    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 2010-10-26
    • 1970-01-01
    • 2011-10-14
    • 2022-01-20
    相关资源
    最近更新 更多