Что я сделал до сих пор добиться того, что я хочу с помощью Entity Framework это что-то вроде этого: рамки сущность множественного каскадные пути ошибки
// User.cs
public class User {
public Guid ID { get; set; } // column: user_id
public virtual ICollection<Event> Events { get; set; }
}
// Event.cs
public class Event {
public Guid ID { get; set; } // column: event_id
public virtual Guid UserID { get; set; } // column: event_userid
public virtual ICollection<User> Guests { get; set; }
}
// MyAppContext.cs
...
protected override void OnModelCreating(DbModelBuilder mb) {
mb.Entity<User>()
.HasKey(u => u.ID)
.HasMany(u => u.Events)
.WithOptional()
.HasForeignKey(e => e.UserID);
mb.Entity<Event>()
.HasKey(e => e.ID)
.HasMany(e => e.Guests)
.WithMany();
}
...
Я ожидал, что структура базы данных будет следующим:
TABLE: user
user_id uniqueidentifier not null primary key
TABLE: event
event_id uniqueidentifier not null primary key
event_userid uniqueidentifier not null foreign key references user(user_id)
TABLE: event_guests
event_id uniqueidentifier not null
user_id uniqueidentifier not null
у меня есть ощущение, что свободно API я использую выше, не собирается дать ожидаемую структуру базы данных, а также, я получаю следующее исключение, что я не имею ни малейшего понятия, как это исправить:
Introducing FOREIGN KEY constraint 'FK_xxx' on table 'event_guests'
may cause cycles or multiple cascade paths. Specify ON DELETE NO
ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.
Я новичок в инфраструктуре сущности, любая помощь будет высоко оценена.
В какой-то другой должности было предложено попробовать это: modelBuilder.Conventions.Remove(); Я сделал, и теперь все хорошо. Благодарю. –
gplusplus