我是这样的3个表之间的关系
我想要一个给出类型为 table1 的参数的方法和 DbContext 我从 table3 中获取所有相关的行,通过< EM>表2
这是我的实施
public static IQueryable<table3> GetRows(
EntitiesContext context,
table1 row)
{
var table3Rows =
from t2 in row.table2
join t3 in context.table3 on t2.IdTable3 equals t3.Id
select t3;
return table3Rows;
}
这种方法的问题在于我无法返回 table3Rows ,因为它的 IEnumerable 不是 IQueryable 。< / p>
使用 join 时,是否有任何解决方法可以返回 IQueryable ?
我需要 IQueryable ,因为我打算对结果做一些其他查询。
答案 0 :(得分:5)
如果您已经实现了Table1
对象,那么您将无法使用导航属性。如果您有IQueryable<Table1>
,那么您可以使用您正在使用的常规方法,结果自然会是IQueryable<Table3>
。
由于您有一个具体化的表格行,您需要在数据库中查询Table2
项目,而不是使用导航属性。
public static IQueryable<table3> GetRows(
EntitiesContext context,
table1 row)
{
var table3Rows =
from t2 in context.table2
where row.Table2Id == t2.Id
from t3 in t2.Table3 //here we can use a navigation property, since it's not on a materialized object.
select t3;
return table3Rows;
}