Entity framework 如何从连接表中读取数据代码优先方法
如何以代码优先的方式从连接表中检索数据。我知道我可以这样添加数据Entity framework 如何从连接表中读取数据代码优先方法,entity-framework,ef-code-first,Entity Framework,Ef Code First,如何以代码优先的方式从连接表中检索数据。我知道我可以这样添加数据 Movie.Tag.Add(item) 但是想知道如何取回连接表中的这些数据吗?这将为您提供连接表中的所有行-每一行都表示为一个匿名对象,该行的两个ID作为属性: var junctionTableDataList = (from m in context.Movies from t in m.Tags sele
Movie.Tag.Add(item)
但是想知道如何取回连接表中的这些数据吗?这将为您提供连接表中的所有行-每一行都表示为一个匿名对象,该行的两个ID作为属性:
var junctionTableDataList = (from m in context.Movies
from t in m.Tags
select new
{
MovieId = m.MovieId,
TagId = t.TagId
}).ToList();
如果要将结果限制在特定电影或几部电影中,可以在选择
之前添加where
子句
编辑
扩展方法和lambda表达式也是如此:
var junctionTableDataList = context.Movies
.SelectMany(m => m.Tags.Select(t => new
{
MovieId = m.MovieId,
TagId = t.TagId
}))
.ToList();
编辑2
如果要从方法返回数据,可以创建litte helper类型并返回那些“命名”对象的列表,而不是匿名对象:
public class JunctionData
{
public int MovieId { get; set; }
public int TagId { get; set; }
}
List<JunctionData> junctionTableDataList
= (from m in context.Movies
from t in m.Tags
select new JunctionData
{
MovieId = m.MovieId,
TagId = t.TagId
}).ToList();
公共类连接数据
{
public int MovieId{get;set;}
public int TagId{get;set;}
}
列表junctionTableDataList
=(来自上下文中的m.Movies
从t到m.标签
选择新连接数据
{
MovieId=m.MovieId,
TagId=t.TagId
}).ToList();
或
…选择(t=>new JunctionData…
用于扩展方法语法。如果我想在lambda Expression中执行此操作,该怎么办再次感谢您的回答。我希望能够返回junctionTableDataList,以便能够访问junction表中的电影ID。但这是一种匿名类型。我该怎么做呢?谢谢您的回答非常有用pful。我现在的问题是,我想选择所有具有特定标记ID的电影。例如,我想选择所有具有标记ID=2的电影。thanks@JED:请为此创建一个新问题。它不再适合您的初始问题。您也可以单击答案左侧的白色复选标记,表示它解决了问题您的问题中描述的问题。(如果Stackoverflow解决了您的问题,那么以这种方式“接受”答案是一种很好的做法。)