저는 최근에 Entity Framework와 함께 작업 할 때 원본 도메인 클래스 논리와 혼합 된 POCO 클래스를 사용하여 코드 우선으로 디자인하는 것이 좋습니다.POCO 클래스를 도메인 클래스로 사용하지만 사용자 정의 링크 게터 및 설정자가 있습니까?
그래서이 새로운 아이디어를 사용하기로 결정했습니다. 예전에 DatabasePerson
이라는 POCO 클래스와 Person
이라는 도메인 클래스가있었습니다. 이제 Entity Framework를 병합하여 Entity Framework에서 내 리포지토리를보다 효율적으로 관리하고 도메인 계층의 변경 사항을 쉽게 관리 할 수있게하려고합니다.
이제 DatabasePerson
POCO 클래스에서 DatabaseAccount
POCO 클래스에 대한 링크가 있습니다. 마찬가지로 Person
도메인 클래스에는 Account
도메인 클래스에 대한 링크가 있습니다. 엔티티 프레임 워크에서
DatabasePerson
클래스로) 가상 링크 속성을 선언
public virtual DatabaseAccount Account { get; set; }
그러나, 만약에 계정을 설정하거나 가져 오는 방법을 변경하고 null
으로 설정할 때 예외를 처리하는 방법을 변경하고 싶습니다. Entity Framework가 테이블에 추가하는 것과 충돌하지 않도록하려면 어떻게해야합니까?
여기에 내 도메인 클래스 '링크입니다 : 어떻게 든 커스터마이즈의이 양식을 유지하려는
public Account Account {
get {
//maybe do some other stuff here.
return account;
}
set {
if (value == null) throw new ArgumentNullException("value");
account = value;
//maybe do some other stuff here.
}
}
뿐만 아니라 게으른 로딩이있다. 그게 가능하니?
Entity Framework를 사용하면 집계를 검색하고 업데이트하는 작업이 정확히 하나의 작업입니다. 언제나 구할 필요가 없으며 원하는 때에 저장할 수 있습니다. 이것을 염두에두고, 당신은 여전히 그 문제에 대해 같은 견해를 가지고 있습니까? 사람과 계정은 내 데이터베이스의 실제 개체가 아닙니다. 방금 예를 들어 설명했습니다. –
@MathiasLykkegaardLorenzen 의견이 아닙니다. 이것이 DDD가 작동하는 방식이며, 도메인은 먼저, db는 존재하지 않습니다. 도메인은 EF를 사용하는 단서가 없으며 ORM과 상관없이 도메인이 동일해야합니다. 그렇지 않으면 처음에 db를 사용하고있는 것입니다. – MikeSW
나는 그게 POCO의 핵심이라고 생각했다. 도메인 클래스와의 통합을 용이하게하기. DDD 세계에서 어떻게 데이터베이스에 물건을 저장할 수 있습니까? –