Здравствуйте.
Появилась необходимость скопировать себе базу фильмов с TMDb.org
Готовых дампов я не нашёл и даже администрация сайта предлагает перебирать все фильмы по ID с 1 по последний.
Скорее всего не у меня одного возникала такая необходимость, поэтому хотелось бы узнать, есть ли уже какие-то готовые решения, чтобы не заниматься рутиной и не городить свой велосипед.
Если же таких решений нет, то подскажите пожалуйста как правильно описать контекст таблицы для класса со свойствами в виде объектов других классов.
Платформа .Net Core ConsoleApp
Я использую PostgreSQL с EntityFramework и Npgsql.EntityFrameworkCore.PostgreSQL
Для использования TMDb API использую библиотеку TMDbLib
У этой библиотеки уже есть рабочие сущности для фильмов и их полей, поэтому хотелось бы иметь возможность не писать новые классы для таблиц, а использовать уже имеющиеся. Такое возможно или им всё же чего-то не хватает?
БД и таблицы, соответственно, планировалось уже создать программно на основе имеющегося контекста.
Просто ранее мне доводилось работать только с объектами, имеющими лишь примитивные поля (текст/число), а вот с коллекциями и составными объектами нет.
Самое очевидное что приходит в голову, это написать новые классы (или унаследовать?) на основе существующих заново, добавив всем поле для ID, а в основном классе Movie
поменять поля типа класса на поле типа int
и хранить ID, указывающий на строку уже в таблице с тем типом класса. Коллекции же, наверное, можно будет хранить в виде строки, в которой содержится перечисление ID через запятую (или любой другой разделитель).
Или таки есть другое решение, которое не требует столько рутинной работы?
Вот описание класса, который хотелось бы записать в виде БД:
public class Movie
{
public Movie();
[JsonProperty("production_companies")]
public List<ProductionCompany> ProductionCompanies { get; set; }
[JsonProperty("production_countries")]
public List<ProductionCountry> ProductionCountries { get; set; }
[JsonProperty("release_date")]
public DateTime? ReleaseDate { get; set; }
[JsonProperty("release_dates")]
public ResultContainer<ReleaseDatesContainer> ReleaseDates { get; set; }
[JsonProperty("releases")]
public Releases Releases { get; set; }
[JsonProperty("revenue")]
public long Revenue { get; set; }
[JsonProperty("reviews")]
public SearchContainer<ReviewBase> Reviews { get; set; }
[JsonProperty("poster_path")]
public string PosterPath { get; set; }
[JsonProperty("runtime")]
public int? Runtime { get; set; }
[JsonProperty("spoken_languages")]
public List<SpokenLanguage> SpokenLanguages { get; set; }
[JsonProperty("status")]
public string Status { get; set; }
[JsonProperty("tagline")]
public string Tagline { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("translations")]
public TranslationsContainer Translations { get; set; }
[JsonProperty("video")]
public bool Video { get; set; }
[JsonProperty("videos")]
public ResultContainer<Video> Videos { get; set; }
[JsonProperty("similar")]
public SearchContainer<SearchMovie> Similar { get; set; }
[JsonProperty("vote_average")]
public double VoteAverage { get; set; }
[JsonProperty("popularity")]
public double Popularity { get; set; }
[JsonProperty("original_title")]
public string OriginalTitle { get; set; }
[JsonProperty("account_states")]
public AccountState AccountStates { get; set; }
[JsonProperty("adult")]
public bool Adult { get; set; }
[JsonProperty("alternative_titles")]
public AlternativeTitles AlternativeTitles { get; set; }
[JsonProperty("backdrop_path")]
public string BackdropPath { get; set; }
[JsonProperty("belongs_to_collection")]
public SearchCollection BelongsToCollection { get; set; }
[JsonProperty("budget")]
public long Budget { get; set; }
[JsonProperty("changes")]
public ChangesContainer Changes { get; set; }
[JsonProperty("overview")]
public string Overview { get; set; }
[JsonProperty("credits")]
public Credits Credits { get; set; }
[JsonProperty("homepage")]
public string Homepage { get; set; }
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("images")]
public Images Images { get; set; }
[JsonProperty("imdb_id")]
public string ImdbId { get; set; }
[JsonProperty("keywords")]
public KeywordsContainer Keywords { get; set; }
[JsonProperty("lists")]
public SearchContainer<ListResult> Lists { get; set; }
[JsonProperty("original_language")]
public string OriginalLanguage { get; set; }
[JsonProperty("genres")]
public List<Genre> Genres { get; set; }
[JsonProperty("vote_count")]
public int VoteCount { get; set; }
}
На всякий случай, сущности всех описанных здесь классов есть по ссылке:
https://github.com/LordMike/TMDbLib/tree/master/TMDbLib/Objects
Буду рад любой информации, ссылкам на инструкции и примерам других контекстов для подобных классов.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Писал Winform-приложение, чтобы делать скриншоты выбранной области экрана (аналог "Ножниц" от Windows)
Доброй ночиКак правильно реализовать проверку полей на null
Прохожу учебник по JS на известном сайте, и вроде я понял замыкания, осозналНо