我正在尝试将系统迁移到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中的引用进行操作。 任何帮助?
答案 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中的引用进行操作。任何帮助?
我不明白这句话 - 或许你可以澄清一下?