2012-06-28 2 views
0

엔티티 개체를 직접 생성하지 못하게해야하는 시나리오에 직면하고 있습니다.Entity Framework 직접 POCO 생성 방지

저는 코드 우선을 사용하고 있습니다. 나는 어딘가에 내가 객체를 생성 할 수 있어야만하는 메서드를 사용하고 싶습니다. 이것에 대해 일반적으로 사용되는 관행이 있습니까?

답변

1

EF는 개인/보호 생성자가있는 엔티티에서 작동 할 수 있습니다.

public class MyEntity 
{ 
    protected MyEntity() { } 

    public int Id { get; set; } 

    public string Name { get; set; } 
} 

public class MyContext : DbContext 
{ 
    public DbSet<MyEntity> MyEntities { get; set; } 
} 

그런 다음 컴파일 오류가 발생합니다 new MyEntity()로 엔티티를 생성 :

그래서이 샘플 문맥을 할 수 있습니다.

그러나 EF를 통해 여전히 DbSet.CreatemyContext.MyEntities.Create(); 인 상태로 생성 할 수 있으며 MyEntity의 모든 작업은 예를 들어 작동합니다. 쿼리 및 업데이트 등.

물론 당신은 또한 객체 생성을 관리 MyEntity에 정적 팩토리 메소드를 가질 수

public class MyEntity 
{ 

    //... 

    public static MyEntity MyCreate() 
    { 
     return new MyEntity(); 
    } 
} 
관련 문제