使用LINQ

时间:2018-10-04 19:18:23

标签: linq dto

我最近一直在与DTO合作,无法确定此代码存在的问题。

我正在将流派名称和电影名称映射到GenreMovieDto。 Visual Studio没有显示任何错误(红线等),但是在运行代码时,我得到以下信息:

  • $ exception {“在LINQ to Entities中不支持指定的类型成员'Movies'。仅支持初始化程序,实体成员和实体导航属性。”} System.NotSupportedException

我的代码如下:

    public class Genre
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public IEnumerable<Movie> Movies { get; set; }
    }

    public class Movie
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string AgeRating { get; set; }
        public int NumberInStock { get; set; }

        public Genre Genre { get; set; }
    }

    public class GenreMovieDto
    {      
        public string GenreName { get; set; }
        public IEnumerable<Movie> Movies { get; set; }
    }

我的API调用:

        public IEnumerable<GenreMovieDto> GetGenresWithMovies()
        {
            var genresWithMovies = _context.Genres
                .Include(m => m.Movies)
                .Select(x => new GenreMovieDto
                {
                    GenreName = x.Name,
                    Movies = x.Movies    <<<<< CRASHES HERE
                })
                .ToList();

            return genresWithMovies;
        }

有什么想法吗?任何建议/批评都欢迎:P我在这里学习。

预先感谢

1 个答案:

答案 0 :(得分:1)

您可以这样做(EF不支持IEnumerable <...>类型成员):

public class Genre
{
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual List<Movie> Movies { get; set; }
}