Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用EF在linq中查询时无法查看关系表_Linq_Lambda_Linq To Entities_Entity Framework 6_Composite Primary Key - Fatal编程技术网

使用EF在linq中查询时无法查看关系表

使用EF在linq中查询时无法查看关系表,linq,lambda,linq-to-entities,entity-framework-6,composite-primary-key,Linq,Lambda,Linq To Entities,Entity Framework 6,Composite Primary Key,我的数据库中有三个表: 表A(援助、姓名、工资)-主表 表B(投标、地址、城市)-主表 TableC(AID,BID)-使用TableA和TableB的复合键映射 现在我只想使用这些表和实体框架检索记录 select cm.Name, proj.Address from TableA cm inner join TableC pc on cm.AID = pc.AID inner join TableB proj on pc.BID= proj.BID 当我在上下文中查询时,我无法看到Tab

我的数据库中有三个表:

  • 表A(援助、姓名、工资)-主表
  • 表B(投标、地址、城市)-主表
  • TableC(AID,BID)-使用TableA和TableB的复合键映射
  • 现在我只想使用这些表和实体框架检索记录

    select cm.Name, proj.Address from TableA cm
    inner join TableC pc on cm.AID = pc.AID
    inner join TableB proj on pc.BID=  proj.BID
    
    当我在上下文中查询时,我无法看到TableC。我不知道为什么会这样。我尝试在Linq中加入self-join,但没有成功

    编辑
    [XmlIgnoreAttribute()]
    [SoapIgnoreAttribute()]
    [DataMemberAttribute()]
    [EdmRelationshipNavigationPropertyAttribute(“上下文”、“表C”、“表A”)]
    公共实体集合表
    {
    得到
    {
    返回((IEntityWithRelations)this.RelationshipManager.GetRelatedCollection(“context.TableC”、“TableA”);
    }
    设置
    {
    如果((值!=null))
    {
    ((IEntityWithRelationships)this.RelationshipManager.InitializeRelatedCollection(“context.TableC”,“TableA”,value);
    }
    }
    }
    [XmlIgnoreAttribute()]
    [SoapIgnoreAttribute()]
    [DataMemberAttribute()]
    [EdmRelationshipNavigationPropertyAttribute(“上下文”、“表C”、“表B”)]
    公共实体集合表
    {
    得到
    {
    返回((IEntityWithRelationships)this.RelationshipManager.GetRelatedCollection(“context.TableC”、“TableB”);
    }
    设置
    {
    如果((值!=null))
    {
    ((IEntityWithRelationships)this.RelationshipManager.InitializeRelatedCollection(“context.TableC”,“TableB”,value);
    }
    }
    }
    
    您不需要查看连接表

    var results=db.TableA
      .Include(a=>a.Addresses)
      .Select(a=>new {a.Name,a.Addresses});
    

    您不需要查看连接表

    var results=db.TableA
      .Include(a=>a.Addresses)
      .Select(a=>new {a.Name,a.Addresses});
    

    谢谢你,罗伯特。我尝试了这个解决方案,但在lambda上面写时找不到a.Addresses表达式。我相信。Include only指的是关系表名,这意味着字符串格式的表名。@Akash尝试使用System.Data.Entity放置
    位于文件顶部。尝试放置上面提到的命名空间,但如果将命名空间放置在上面,键入
    ,则无效。包括(a=>a.
    然后它会告诉您可以包含哪些内容。只需在其中找到您的导航属性。我猜它将被称为Addresses,基于TableB实际被称为Address的假设,使用默认值,EF会为您调用导航属性Addresses。如果它实际被称为TableB,您可以y TableBs。感谢Robert的快速响应。我猜您引用的是不同的命名空间,因为我没有看到导航属性。仅供参考,即使在添加了上述命名空间之后,.Include方法也只希望传递字符串值,而不是表达式。我不知道我缺少了什么!感谢Robert。我尝试了此解决方案,但找不到.Addr在lambda上面写入时使用表达式。我相信。Include只引用关系表名,这意味着字符串格式的表名。@Akash尝试使用System.Data.Entity;
    放在文件顶部。尝试将上述名称空间放在上面,但在键入
    时不起作用。Include(a=>a.
    然后它会告诉您可以包含哪些内容。只需在其中找到您的导航属性。我猜它将被称为Addresses,基于TableB实际被称为Address的假设,使用默认值,EF会为您调用导航属性Addresses。如果它实际被称为TableB,您可以y TableBs。感谢Robert的快速响应。我想你指的是不同的名称空间,因为我没有看到导航属性。仅供参考,即使在添加了上述名称空间之后,.Include方法只希望传递字符串值,而不是表达式。我不知道我缺少了什么!