2012-03-22 3 views
4

내 POCO 클래스에 대한 도메인 프로젝트가있는 ntier 솔루션이 있습니다. 특정 테이블 필드가 특정 길이로 제한된 데이터베이스를 생성하려고합니다. 이제 POCO 클래스의 Data Annotations 또는 DbContext의 OnModelCreating 메서드를 사용하는 두 가지 방법이 있지만 가장 좋은 방법은 무엇입니까?OnModelCreating 대 데이터베이스 구성을위한 DataAnnotations

OnModelCreating 접근 방식에 대한 나의 관심은 이것이 Entity Framework에만 해당된다는 것입니다. 다른 ORM으로 전환해야합니다. 데이터베이스 구성을 다시 구현하지 않으면 데이터베이스 구성이 손실됩니다.

어노테이션 접근 방식을 사용하면 모델이 어지럽고 결국 "POCO"태그가 없어 질까 걱정됩니다. 다른 ORM이 주석을 존중할 것인지 확신 할 수 없습니다. 반면에 데이터베이스의 모습에 대한 모든 정보는 모델에 묶여 있으므로 유지 관리가 쉽습니다.

올바른 방향으로 나를 가리키는 어떤 생각?

답변

3

OnModelCreating이 더 좋습니다. 일부 매핑 기능은 데이터 주석을 통해 사용할 수 없습니다. 게다가 당신이 이미 언급 한 것처럼, 데이터 어노테이션은 POCO 원칙에 위배됩니다. 클래스에 지속성에 대한 정보가 포함될 수 있고 일부 데이터 어노테이션에도 현재 도메인 프로젝트에서 참조 된 EntityFramework.dll이 필요하기 때문입니다.

데이터 주석은 주로 MS 도구에서 사용되는 MS 특정 기능입니다. 다른 ORM과 함께 사용하려면 데이터 주석에서 ORM의 매핑 설명으로의 변환을 구현해야합니다 (아직없는 경우).