Entity Framework 6.0 (ASP net core). не могу задать связь 1 ко многим

658
19 января 2017, 02:09

Здравствуйте! Начал переносить проект на ASPNetCore MVC. Столкнулся с проблемой миграции базы данных при внесении новых 2-ух связей 1 ко многим. Решил освежить знания Entity Framework и указывать все связи явно через атрибуты.

    public class Station : IEntitie
    {
        [Key]
        public int Id { get; set; }
        [Required(ErrorMessage = "Введите Ecp код станции")]
        public int EcpCode { get; set; }
        [Required(ErrorMessage = "Введите название станции")]
        public string Name { get; set; }
        public string Description { get; set; }

//добавляю!!!
        public virtual ICollection<RegulatorySchedule> RegulatoryScheduleDispatchStations { get; set; }
//добавляю!!!
        public virtual ICollection<RegulatorySchedule> RegulatoryScheduleDestinationStations { get; set; }
}

    public class RegulatorySchedule : IEntitie
    {
        [Key]
        public int Id { get; set; }
        [Required]
        [MaxLength(10)]
        public string NumberOfTrain { get; set; }                   //Номер поезда в расписании
        [MaxLength(100)]
        public string RouteName { get; set; }                       //Станция отправления и станция назначения, а также фирменное название поезда, если есть.
        public string DaysFollowings { get; set; }                  //Дни следования поезда(ежедневно, четные, по рабочим и т.п.)
        [Column(TypeName = "datetime2")]
        public DateTime? ArrivalTime { get; set; }                  //Время прибытия поезда на станцию
        [Column(TypeName = "datetime2")]
        public DateTime? DepartureTime { get; set; }                //Время отправления поезда со станции

   //добавляю!!!
        public int DispatchId { get; set; }
        [InverseProperty("RegulatoryScheduleDispatchStations")]
        [ForeignKey("DispatchId")]
        public virtual Station DispatchStation { get; set; }        //Станция отправления
 //добавляю!!!
        public int DestinationId { get; set; }
        [InverseProperty("RegulatoryScheduleDestinationStations")]
        [ForeignKey("DestinationId")]
        public virtual Station DestinationStation { get; set; }     //Станция назначения
}

Пытаюсь явно задать FK и связь с зависимой таблице через InverseProperty. Но при миграции вылазит ошибка:

"Introducing FOREIGN KEY constraint 'FK_RegulatorySchedules_Stations_DestinationId' on table 'RegulatorySchedules' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints."

Подскажите что не так?

Изменил:

RegulatorySchedule

public int DispatchId { get; set; }
[ForeignKey("DispatchId")]
public virtual Station DispatchStation { get; set; }        //Станция отправления
public int DestinationId { get; set; }
[ForeignKey("DestinationId")]
public virtual Station DestinationStation { get; set; }     //Станция назначения

Station

[ForeignKey("DispatchId")]
public virtual ICollection<RegulatorySchedule> RegulatorySchedulesDispatchStation { get; set; }
[ForeignKey("DestinationId")]
public virtual ICollection<RegulatorySchedule> RegulatorySchedulesDestinationStation { get; set; }

тоже вылазит ошибка при миграции

"Unable to determine the relationship represented by navigation property 'RegulatorySchedule.DispatchStation' of type 'Station'. Either manually configure the relationship, or ignore this property from the model."

READ ALSO
Как через код можно управлять системой частиц?

Как через код можно управлять системой частиц?

Как через код можно управлять системой частиц?

460
Система рандомного лута в сундуке (Unity3D, C#)

Система рандомного лута в сундуке (Unity3D, C#)

Нужна помощьЯ хочу сделать систему рандомного лута из сундука для игры, но не получается

489
В чем различие между ReadLine() и ReadExisting() у COM-Port&#39;а

В чем различие между ReadLine() и ReadExisting() у COM-Port'а

Необходимо считывать данные с COM-портаОбычно рекомендуют пользоваться методом ReadLine()

457