Итак, у меня есть две модели. MovieModel и MovieQueryModel. Каждый фильм имеет соответствующий запрос фильма. Но запрос фильма не всегда имеет связанный фильм.
Так что в моей базе данных я бы хотел столбец в моей таблице фильмов, который имеет ссылку на соответствующий запрос фильма. Но мне не нужен столбец в моей таблице запросов фильмов, который ссылается на фильм.
Первоначально я думал, что это будут отношения один-на-один, но я начинаю сомневаться в этом. Похоже, что для отношения внешнего ключа один к одному в EF мне нужна ссылка в обеих моделях на другую модель.
Кажется, что я мог бы сделать ссылку на MovieModel из MovieQueryModel и просто установить ее в null для запросов без совпадения, но я не хочу этого делать. Похоже, есть лучший способ.
Это отношения один на один? Если нет, то что это за отношения и как мне настроить мои модели в EF Core для поддержки этого поведения? Мои модели ниже.
MovieQueryModel.cs
namespace imdb_data_retrieval.Models
{
public class MovieQueryModel
{
public MovieQueryModel(string queryTitle, string queryReleaseYear, string result){
id = Guid.NewGuid();
QueryTitle = queryTitle;
QueryReleaseYear = queryReleaseYear;
Result = result;
QueryDate = DateTime.Now;
}
[Key]
public Guid Id { get; set; }
[Required]
public string QueryTitle { get; set; }
[Required]
public string QueryReleaseYear { get; set; }
public string Result { get; set; }
public DateTime QueryDate { get; set; }
}
}
MovieModel.cs
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using MediatR;
namespace imdb_data_retrieval.Models
{
public class MovieModel
{
public MovieModel(string title, int releaseYear){
id = Guid.NewGuid();
Title = title;
ReleaseYear = releaseYear;
ImdbId = null;
QueryDate = DateTime.Now;
}
[Key]
public Guid id { get; set; }
[ForeignKey("MovieQuery")]
public Guid RelatedQuery { get; set; }
public string Title { get; set; }
public int ReleaseYear { get; set; }
public string ImdbId { get; set; }
public DateTime QueryDate { get; set; }
}
}