2010-02-10 42 views
3

我有一个包含以下数据库:实体框架和链接表的问题

**表1 **

  • ID(PK)
  • 字段1

* *表2 **

  • Id(PK)
  • 字段2

**链接表**

  • Table1Id(FK)
  • Table2Id(FK)

的问题是,我无法从表1访问表2 ,即使关系存在于数据库中。

例如,下面应该是可能的:

var Results = from c in DataContext.Table1 
       where c.Table2.Field2 == "Test" 
       select c; 

然而,“c.Table2.Field2”不适用于某些原因 - 我得到了“c.Table2。”在下面的(标准的任何<>,其中其中<>等):

  • RelationshipName
  • RelationshipSet
  • SourceRoleName
  • TargetRoleName

所以很明显的东西是扭曲的地方,但我无法解决什么问题!

两个表中的实体模式的存在,以及它们之间的有效关系。

+0

只需添加关于实体框架和链接表提供一些信息 - 链接表必须有关系的双方的复合主键,否则EF标记为只读,并不会通过创建表的任何关系。 – Moo 2010-02-17 12:42:18

回答

2

c.Table2.Field2不可用的原因是c.Table2没有名为Field2的属性。 c.Table2是具有该属性的实体的列表,而不是该实体的实例。目前尚不清楚你的意图是在这里什么,但我认为你想:

var Results = from c in DataContext.Table1 
       where c.Table2.Any(t2 => t2.Field2 == "Test") 
       select c;