Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ADO.NET Linq连接到C中的实体#_C#_Entity Framework_Ado.net_Entity - Fatal编程技术网

C# 使用ADO.NET Linq连接到C中的实体#

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

我正在尝试将一个系统迁移到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中的参考可能是一个问题。
有什么帮助吗?

在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中编写它的方式相同。