2010-06-24 4 views
2

SQL Server 2008 데이터베이스를 통해 EF4 모델이 있습니다. 내 모델에서 나는 많은 관계로 많은이 있습니다많은 엔터 프라이즈 프레임 워크 4 많은 수의 실제 엔터티를 삭제하지 않습니다

기사 * - *

프로젝트 * 댓글 - * 댓글 내 모델에서

, 단순히 만들어 연결을하고 설정 최대 다수. 내 db에서 필자는 두 개의 추가 테이블 ArticleComments 및 ProjectComments를 가져 오는데, 이는 각 테이블에 기본 키만 보유합니다.

문제는 article.Comments.Remove를 사용하여 (내 코드에서 기사의 댓글을 삭제하면 ([일부 의견 엔티티가])에만 ArticleComments에서 행을 삭제, 그리고 실제 댓글이 자체이다.

이것에

모든 솔루션은?

나는 ProjectComments 테이블에 트리거 ondelete로 설정하는 방법에 대한 생각했지만, 나는 이것이 단지 엔티티 프레임 워크 4의 재료를 사용하여 가능해야한다 생각합니다.

+0

몇 가지 코드를 제공해 주시겠습니까? 엔티티를 어떻게로드합니까? 어떻게 그들을 삭제합니까? – DHN

+0

실제로 _shared_ 의견이 있으십니까? 나는 'Articles 1 - * Comments' 관계를 기대했을 것이다. –

+0

그들은 공유하지 않을 것이지만, 사용자가 그가 어떤 엔터티에 작성한 주석을 쉽게 볼 수 있기를 바랍니다. 따라서 프로젝트에 대한 별도의 주석 테이블을 만드는 대신 모든 주석을 하나의 테이블에 던지고 많은 것을 많은 것으로 사용합니다. –

답변

2

당신이 한 것은 기사와 주석 간의 연관성 만 제거합니다 (주석 테이블의 데이터는 삭제하지 않고 ArticleComments의 데이터는 삭제하지 않습니다).

설명을 삭제하려면 컨텍스트 인스턴스에서 DeleteObject 메서드를 호출해야합니다. 이것은 또한 코멘트와 기사 (그리고 내가 옳다면 코멘트와 프로젝트 사이의 연관)를 제거합니다.

SaveChanges 호출 후 Brea kpoint를 입력하고 IntelliTrace를 사용하여 SQL Server에 대해 실행되는 쿼리를 보거나 SQL 프로필을 마지막 수단으로 사용할 수도 있습니다.

감사합니다 ...

+0

아, 이것은 내가 원하는만큼 실제로 효과가있었습니다. "문제"는 관련된 모든 주석의 목록을 가져와 DeleteObject를 호출하여 열거해야한다는 것입니다. 잘 작동합니다. 물론 많은 관계 엔티티를 제거하는 좀 더 우아한 방법을보고 싶습니다 ... –

+0

불행히도 EF로이 작업을 수행하는 또 다른 방법을 모르고 있습니다 (EntitySQL을 사용하지도 않습니다) . – Padel

+0

좋아, 고마워! :) –

0

을하려고 캐스케이드 (cascade) 할 삭제 작업을 설정합니다. 연관 속성에 있습니다.

+0

그것은 할 수 없습니다. 은 다중성이 '*'이므로 지정된 작업을 지정할 수 없습니다. 다중성 '*'이있는 끝에서 연산을 지정할 수 없습니다. –

+0

오, 알겠습니다 ... 그 점을 놓쳤습니다. –

관련 문제