实体框架 - 如何在辅助表中的非主键列上连接表?

Mar*_*kGr 8 c# mapping entity-framework join foreign-keys

我想使用实体框架加入2个表.我希望第二个表的连接位于非主键列上.

例如,我有一个带有字段的表Foo

Foo.Id (PK)
Foo.DbValue
Run Code Online (Sandbox Code Playgroud)

和桌子吧

Bar.Id (PK)
Bar.DbValue
Bar.Description
Run Code Online (Sandbox Code Playgroud)

我想在DbValue领域加入Foo到EF的Bar.

在hibernate/nhibernate中,可以通过向多对一添加列参数来实现.大致是这样的

<class name="Foo" table="Foo>
  <id name="Id" column="Id" />
  <many-to-one name="Bar" class="Bar" column="**DbValue**" />
</class>
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何在EF中这样做,请提前感谢.

Ale*_*mes 7

那么你不能把它作为命名关系(即标准方式).

所以这意味着这种关系不是模型的一部分.

但是,您仍然可以执行标准的LINQ连接:

from f in ctx.Foo
join b in ctx.Bar on f.DbValue equals b.DbValue
select new {f,b} 
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

看看我的EF Tips系列.