У меня есть следующие классы, и EF-соглашение создало таблицы в порядке - все хорошо. Теперь я хочу настроить каскадное удаление в ToDoList (так что, когда я удаляю ToDoList, все ToDoItems и UserToDoLists также автоматически удаляются). Должен ли я повторно указать, что EF-соглашение может обнаружить, чтобы установить WillCascadeOnDelete? Как указать эти отношения в свободном API?Как настроить каскадное удаление с помощью EF Fluent API
public class ToDoList
{
public int Id { get; set; }
public string Description { get; set; }
public virtual ICollection<ToDoItem> ToDoItems { get; set; }
public virtual ICollection<UserToDoList> UserToDoLists { get; set; }
}
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
: base()
{
}
public virtual ICollection<UserToDoList> UserToDoLists { get; set; }
}
// a todolist can have many users and a user can have many todolist
// junction table will have addition fields
public class UserToDoList
{
public string UserId { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual int ToDoListId { get; set; }
public virtual ToDoList ToDoList { get; set; }
// additional fields
public bool IsOwner { get; set; }
public int Ordinal { get; set; }
public bool AllowEdit { get; set; }
}
public class UserToDoListConfig : EntityTypeConfiguration<UserToDoList>
{
public UserToDoListConfig()
{
HasKey(ut => new { ut.UserId, ut.ToDoListId });
}
}
public class ToDoListConfig : EntityTypeConfiguration<ToDoList>
{
public ToDoListConfig()
{
Property(t => t.Description).IsRequired().HasMaxLength(50);
HasMany(t =>t.UserToDoLists).??
}
}
Возможный дубликат кода [Entity Framework (EF) Первое каскадное удаление для отношения «один-к-одному»] (http://stackoverflow.com/questions/17487577/entity-framework-ef-code-first -cascade-delete-for-one-to-zero-or-one-relations) – Kahbazi
Каскадное удаление должно быть по умолчанию для отношений «один ко многим», как ваш. Вы проверяли сгенерированные таблицы/внешние ключи? –
mine is many to many relationship – lee23