近来,使用ADO.NET实体框架来处理数据库底层操作,使用linq to entities来做数据库查询操作,中间遇到多表查询的问题,说是使用导航属性来处理,但是一直不知道该怎么处理。表结构如下:
这是实体模型中的表结构,实际上数据库表结构应该是:
要做的查询,用sql语句描述如下:
1 sql =
2 "select a.[ID],a.[Title],b.[group] as member " +
3 "from " +
4 "(select * from [actioncontrols] where [parent] = @model ) a " +
5 "left outer join [groupactioncontrol] b " +
6 "on a.[id] = b.[actioncontrol] " +
7 "and b.[group] = @member ";
现在的问题是,将这个SQL语句转换成Linq to entities,说是要用到导航属性,不知道该如何使用,希望答题者能将转换的结果给出,捎带能解释一下导航属性到底是怎么回事?
导航属性 就是明明不是这个实体 用这个属性导航到另一个实体
比如 A和B 是 多对多的关系
A因为和B建立了关系 导致A增加了一个 A.Bs 集合导航属性
那么你要取得 ID为1的A和相关的B 只需
context.A.Include("Bs").Where (itema=>itema.Id==1)
就可以了
Include 表示 在查询A的时候 同时也要填充的导航属性