使用EF插入后如何返回每条记录的ID

时间:2014-02-11 20:34:09

标签: c# wcf entity-framework

我有一个带嵌套列表的数据类。一个简化的例子(不是真实的代码):

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的新手,并不确定从哪里开始。我所做的所有搜索都没有真正帮助。有什么指针吗?

2 个答案:

答案 0 :(得分:2)

不要丢失对实体框架对象的引用(例如将它们添加到列表中),在SaveChanges()之后,包含主键的对象属性将使用ID自动更新。

有关详情,请参阅此处 How can I get Id of inserted entity in Entity framework?

答案 1 :(得分:0)

EF自动返回ID。 movie.ID为您提供可以使用的最后插入的ID,或者从您的方法返回,以便在其他地方使用。