C# 使用ADO.NET Linq连接到C中的实体#
我正在尝试将一个系统迁移到ADO.NET实体。我有3个表C# 使用ADO.NET Linq连接到C中的实体#,c#,entity-framework,ado.net,entity,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
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中的参考可能是一个问题。
有什么帮助吗?在a和B之间有一个多对多的 VS.NET生成2个实体A和B,它们都引用了另一个表,但此引用是一个集合 EF不需要映射联接表(C),因为它只包含外键 使用实体上的导航属性检索记录-EF将在幕后通过联接表进行静默联接 查询以获取A的相关B
var query = ctx.As.Include("Bs").Select(x => x.Bs).ToList(); // List<B>
var query=ctx.As.Include(“Bs”).Select(x=>x.Bs.ToList();//列表
查询以获取B的相关A
var query = ctx.Bs.Include("As").Select(x => x.As).ToList(); // List<A>
var query=ctx.Bs.Include(“As”).Select(x=>x.As.ToList();//列表
这被称为急加载
另一种方法是使用延迟加载,即在稍后请求关系时获取关系(我不推荐这种方法)
您不需要在表之间执行显式连接-使用导航属性
我不能这样做,当问题发展时,遵循实体bu中的参考可能是一个问题。有什么帮助吗
我不明白这句话-也许你可以澄清一下?例如,当你尝试向模型A、B、C和D添加更多实体时,E和D包含C和E之间的foring键,我想得到所有的E,当一个具有某些条件的数学通常进行连接时,但现在我必须遵循导航属性。这会降低性能,并且比invoke method更容易编写查询。您可以尝试引用正确的表名吗?试图找出你想要达到的目标是非常令人困惑的。如果您想对联接进行“一些数学运算”,请使用联接表上的
.Include
,但要使用.Where
子句-与在T-SQL中编写它的方式相同。