在EF6 CodeFirst中,我想模拟导航属性的多对多关系。
课程:
public class Event
{
[DataMember]
[Required]
public int Id { get; set; }
// Other properties
[DataMember]
public virtual ICollection<Notification> Notifications { get; set; }
}
public class Notification
{
[DataMember]
[Required]
public int Id { get; set; }
// Other properties
[DataMember]
public virtual ICollection<Event> Events { get; set; }
}
class EventConfiguration : EntityTypeConfiguration<Event>
{
public EventConfiguration()
{
HasMany(e => e.Notifications)
.WithMany(e => e.Events)
.Map(m => m.ToTable("NotificationEvents"));
}
}
其他表上的Event
和Notification
都有级联删除。
如果我尝试创建数据库,我会得到:
引入FOREIGN KEY约束 表上的'FK_dbo.NotificationEvents_dbo.Events_Event_Id' 'NotificationEvents'可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他 FOREIGN KEY约束。
考虑到其他级联,这是公平的。现在我的问题是:如何(或者我可以)在此关系的一方或双方上仅指定级联?
如果我添加(如另一篇文章所示):
class NotificationConfiguration : EntityTypeConfiguration<Notification>
{
public NotificationConfiguration()
{
HasOptional(e => e.Events).WithMany().WillCascadeOnDelete(false);
}
}
我明白了:
在类型上声明的导航属性“Events” '通知'已配置 冲突的多重性。