54
엔티티 프레임 워크 코드 - 우선 링크 테이블에 대해 캐스케이드 삭제를 비활성화하려고합니다. 예를 들어, 많은 사용자가 많은 역할을 가지고 있고 역할을 삭제하려고 시도하는 경우에 해당 역할과 현재 연결된 사용자가없는 경우 해당 삭제가 차단되도록하려는 경우 입니다. 나는 이미 내 OnModelCreating
에서 규칙을 삭제 캐스케이드를 제거 :EF 코드 우선 링크 테이블의 캐스케이드 삭제를 비활성화하는 방법은 무엇입니까?
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
...
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
그리고 나는 사용자 역할 링크 테이블 설정 : 아직 EF 데이터베이스를 만들 때
modelBuilder.Entity<User>()
.HasMany(usr => usr.Roles)
.WithMany(role => role.Users)
.Map(m => {
m.ToTable("UsersRoles");
m.MapLeftKey("UserId");
m.MapRightKey("RoleId");
});
를, 그것의 삭제 캐스케이드를 생성 외래 키 관계.
ALTER TABLE [dbo].[UsersRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.UsersRoles_dbo.User_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[User] ([UserId])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[UsersRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.UsersRoles_dbo.Role_RoleId] FOREIGN KEY([RoleId])
REFERENCES [dbo].[Role] ([RoleId])
ON DELETE CASCADE
GO
이 삭제 캐스케이드를 생성하는 EF를 어떻게 중지 할 수 있습니까?