Я получаю сообщение об ошибке при попытке добавить контроллер (предположительно) из-за неправильно определенных отношений.Я не могу найти, в чем заключается моя проблема.
У меня есть две простые модели: сценарий и условие.Сценарий может состоять из нескольких Условий, но Условие будет связано только с одним Сценарием.(Мой DbContext - это MySQL, а не SQL Server).
Ошибка: при запуске выбранного генератора кода произошла ошибка: «Отношение« Условие »к сценарию. Условия со свойствами внешнего ключа {'ScenarioId: int'} не могут быть нацелены на первичный ключ {" Id ":int}, потому что это не совместимо.Настройте основной ключ или набор совместимых свойств внешнего ключа для этого отношения. '
(У меня не было проблем с созданием ScenariosController и возвратом данных из API. Там, где я ожидал, что массив условий будет, тамбыли только нулевые значения. Кроме того, ошибка произошла при попытке добавить ConditionController.)
public class Scenario
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<Condition> Conditions { get; set; }
}
public class Condition
{
public int Id { get; set; }
public int ScenarioId { get; set; }
public string Type { get; set; }
public string Preference { get; set; }
[ForeignKey("ScenarioId")]
public Scenario Scenario { get; set; }
}
public class EvaluatorContext : DbContext
{
public EvaluatorContext(DbContextOptions<EvaluatorContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Condition>()
.HasOne(s => s.Scenario)
.WithMany()
.HasPrincipalKey(s => s.Id);
modelBuilder.Entity<Scenario>()
.HasMany(s => s.Conditions)
.WithOne()
.HasForeignKey(c => c.ScenarioId);
}
public DbSet<Scenario> Scenario { get; set; }
public DbSet<Condition> Condition { get; set; }
}
Я хочу иметь возможность добавить ConditionController, используя генератор кода, не обнаруживая сообщения об ошибке и иметь возможностьвернуть объект сценария со списком связанных условий и наоборот.