Использование Entity Framework для поиска одного элемента и возврата его в качестве объекта передачи данных? - PullRequest
0 голосов
/ 16 мая 2018

Я использую Entity Framework и пытаюсь найти в базе данных один объект на основе первичного ключа.

У меня есть База данных фильмов , в которой также есть некоторые реляционные данные в других таблицах.

Это то, что я сейчас использую:

Movie newMovie = MovieRepository.FindSingle(id);

Но это также возвращает все отношения этого ряда.

Я создал объект передачи данных с именем MovieDetails, который содержит только эти поля:

public class MovieDetails
{
    public int MovieID { get; set; }
    public string MovieName { get; set; }
    public int? BroughtBy { get; set; }
    public string Director { get; set; }
    public int? Rating { get; set; }
}

Я пытался искать в базе данных с этим, но безуспешно.

public MovieDetails FindSingle(int? id)
{
    MovieDetails newMovieDetails = dbContext.Movies.Select(x => new MovieDetails
    {
        MovieID = (int)id,
        MovieName = x.MovieName,
        BroughtBy = (int)x.BroughtBy,
        Director = x.Director,
        Rating = (int)x.Rating
    }).FirstOrDefault();

Как я могу найти в базе данных одну строку и преобразовать ее в этот MovieDetails формат?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Решил, сделав это:

        using (MovieContext dbContext = new MovieContext())
        {
            var newMovieDetails = dbContext.Movies.FirstOrDefault(x => x.MovieID == id);

            var MappedDetails = new MovieDetails
            {
                MovieID = newMovieDetails.MovieID,
                MovieName = newMovieDetails.MovieName
            };
            return MappedDetails;
        }
    }
0 голосов
/ 16 мая 2018

Используйте Where() для фильтрации записей, затем Select() и FirstOrDefault():

MovieDetails newMovieDetails = dbContext.Movies.Where(x => x.ID == id).Select(x => new MovieDetails
{
    MovieID = x.ID,
    MovieName = x.MovieName,
    BroughtBy = (int)x.BroughtBy,
    Director = x.Director,
    Rating = (int)x.Rating
}).FirstOrDefault();

И заменить эту строку:

Movie newMovie = MovieRepository.FindSingle(id);

этим:

MovieDetails newMovieDto = MovieRepository.FindSingle(id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...