2011-11-27 1 views
0

매개 변수가없는 생성자가없는 코드가 있습니다. 문제는 Entity Framework에서 모델을 사용하려는 경우 매개 변수없는 생성자를 추가해야한다는 것입니다. 매개 변수없는 생성자를 사용하면 내 코드 내에서 불일치가 발생합니다. 또한 엔터티 프레임 워크에서 채울 수 있도록 속성을 공용으로 유지합니다 (실제로 비공개로 유지하려는 경우).클래스 내에서 메서드 또는 생성자가 Entity Framework에 의해 호출되었다는 것을 어떻게 알 수 있습니까?

매개 변수가없는 생성자 또는 public 속성이 코드 내에서 호출되었지만 엔티티 프레임 워크에서 잘 작동하는 경우 예외를 throw 할 수 있어야합니다.

+0

매개 변수없는 생성자가 공개된다는 규칙이 Entity Framework에 있습니까? 대부분의 직렬화 라이브러리는 비슷한 요구 사항을 갖지만 생성자는 공개 일 필요는 없습니다. –

+0

EF 대신 nHibernate 사용 고려 – Eranga

답변

0

우리는 WCF 및 다른 serialization 프레임 워크에 대해 매개 변수없는 생성자와 동일한 문제가 있습니다.

우리가 해결 방법은 사용되지 않는 이유에 대한 설명과 함께 매개 변수가없는 생성자에 Obsolete 특성을 추가하는 것이 었습니다. 그런 다음 코드에서 사용되는 경우 경고로 표시되어 빌드를 실패 할 수 있습니다 (이 단계는 걱정하지 않고 경고만으로 충분합니다).

2

일반적으로 매개 변수화 된 생성자가있는 클래스는 데이터 모델로 사용하지 않는 것이 좋습니다. 객체 생성에 대한 입력을 지정하는 경우 클래스가 데이터베이스에 보존 된 객체의 표현보다 서비스로 더 많이 사용되는 것이 좋습니다. 이것은 ORM을 사용할 때 특히 본질적으로 데이터 맵핑 기술 (EF)이 데이터 특성이 아닌 모델 사용에 대한 지식을 갖도록하기 때문에 사실입니다.

이러한 유형의 문제를 해결하는 일반적인 기술 중 하나는 데이터 전송 개체 (DTO)를 사용하는 것입니다. 데이터베이스에서 좀 더 기본적인 객체를 가져 오면 나머지 응용 프로그램에서 사용되는보다 복잡한 객체 (매개 변수화 된 생성자 및 모두)를 수화하는 데 사용할 수 있습니다. 이러한 우려의 분리는 또한 테스트와 지속성의 무지를 돕습니다.

관련 문제