我有一个带嵌套列表的数据类。一个简化的例子(不是真实的代码):
public class Movie
{
public Int32 TVIndex;
public string MovieName;
public string MovieRating;
public string MovieRuntime;
public List<Actor> MovieActors;
public List<MovieArt> MovieImages;
}
public class Actor
{
public string ActorName;
public string ActorRole;
}
public class MovieArt
{
public string ImagePath;
}
List<Movie> myMovies = new List<Movie>();
这可能包含许多电影,每部电影可能包含许多演员和许多电影艺术。
我将此列表传递给Web服务,该服务使用DataEntityModel将记录插入表中。
有点像..
public void InsertMovies(List<Movie> request)
{
using (TransactionScope scope = new TransactionScope())
{
using (MyMovieStorageEntities DbContext = new MyMovieStorageEntities())
{
foreach (Movie m in request)
{
Movies movie = new Movies();
movie.MovieName = m.MovieName;
movie.MovieRating = m.MovieRating;
movie.MovieRuntime = m.MovieRuntime;
DbContext.DBMovies.Add(movie);
foreach (Actor a in m.MovieActors)
{
Actors actor = new Actors();
actor.ActorName = a.ActorName;
actor.ActorRole = a.ActorRole;
DbContext.DBActors.Add(actor);
}
for (MovieArt i in m.MovieImages)
{
MovieArt artwork = new MovieArt();
artwork.FileName = i.FileName;
DbContext.DBMovieArt.Add(artwork);
}
}
DbContext.SaveChanges();
}
}
}
在Movie表中是一个Identity列,我需要返回每个插入记录的标识,以便在客户端应用程序中使用。
我是DataEntity的新手,并不确定从哪里开始。我所做的所有搜索都没有真正帮助。有什么指针吗?
答案 0 :(得分:2)
不要丢失对实体框架对象的引用(例如将它们添加到列表中),在SaveChanges()
之后,包含主键的对象属性将使用ID自动更新。
有关详情,请参阅此处 How can I get Id of inserted entity in Entity framework?
答案 1 :(得分:0)
EF自动返回ID。 movie.ID
为您提供可以使用的最后插入的ID,或者从您的方法返回,以便在其他地方使用。