Я пытаюсь отобразить две сущности, используя Dapper. Это так:
У вас есть столик Фильм:
MovieID,
Продолжительность,
Описание,
Заглавие,
директор,
Жанры
и таблица проекции:
ProjectionID,
Время,
Цена,
Холл,
MovieID
В фильме есть список проекций (для каждого фильма одна или несколько проекций)
После подключения список результатов для фильмов с их проекциями - это ПЕРВЫЙ фильм и ВСЕ записи из проекции.
По сути, у Movie1 есть две проекции. Movie2 имеет три проекции, он возвращает список из пяти фильмов, и все они - первый фильм, и у всех есть пять проекций.
Может ли кто-нибудь помочь мне, где я могу ошибиться?
public List<Movie> ReturnMovieProjections()
{
var list = new List<Movie>();
var sql = "SELECT " +
"m.MovieID, " +
"m.Runtime, " +
"m.Description, " +
"m.Title, " +
"m.Director, " +
"m.Genres, " +
"p.MovieID, " +
"p.ProjectionID, " +
"p.Time, " +
"p.Price, " +
"p.Hall " +
"FROM Movie AS m INNER JOIN Projection AS p " +
"ON m.MovieID = p.MovieID " +
"WHERE p.MovieID = m.MovieID";
using (var connection = new OleDbConnection(GetConnectionString("CinemaDB")))
{
var movieDictionary = new Dictionary<int, Movie>();
list = connection.Query<Movie, Projection, Movie>(
sql, (movie, projection) =>
{
Movie movieEntry;
if (!movieDictionary.TryGetValue(movie.MovieID, out movieEntry))
{
movieEntry = movie;
movieEntry.Projections = new List<Projection>();
movieDictionary.Add(movieEntry.MovieID, movieEntry);
}
movieEntry.Projections.Add(projection);
return movieEntry;
},
splitOn: "p.MovieID").AsList();
}
return list;
}