在C#中使用ADO.NET Linq加入实体

时间:2010-12-23 23:36:17

标签: c# entity-framework ado.net entity

我正在尝试将系统迁移到ADO.NET实体我有3个表

A => (Id, Name, ...)
B => (Id, Domain, ...)
c => (IdA, IdB)

VS.NET生成2个实体A和B,并且都引用了另一个表,但是这个引用是一个集合。我需要在表之间建立联接。

from a in A join b in B on a.? equal b.?
where condition
select new { Name = a.Name, Domain = b.Domain };

当问题增长时,我无法按照实体bu中的引用进行操作。 任何帮助?

1 个答案:

答案 0 :(得分:2)

A和B之间有多对多

  

VS.NET生成2个实体A和B,并且都引用了另一个表,但是这个引用是一个集合。

EF不需要映射连接表(C),因为它只包含外键。

使用entites上的导航属性来检索记录 - EF将通过幕后的JOIN表进行静默连接。

查询获取A的相关B

var query = ctx.As.Include("Bs").Select(x => x.Bs).ToList(); // List<B>

查询以获取B的相关A

var query = ctx.Bs.Include("As").Select(x => x.As).ToList(); // List<A>

这被称为渴望加载

另一种方法是使用延迟加载,稍后请求时会获取关系(我不推荐这种方法)。

您不需要在表之间执行显式连接 - 使用导航属性。

  

当问题增长时,我无法按照实体bu中的引用进行操作。任何帮助?

我不明白这句话 - 或许你可以澄清一下?