2013-08-06 1 views
3

처음에는 Enum을 사용하여 집계에서 잘 작동했지만 지금은 속성을 List로 변경하면 값이 저장 중이거나 데이터베이스에서 검색되지 않는다는 것을 알게됩니다. 나는 CodeFirst가 목록을위한 별도의 테이블을 만들고 거기에 행을 매핑 할 것이라고 생각했지만, 그렇지 않은 경우 값은 저장되거나 다시 검색되지 않습니다.목록 <Enum> 집계 EntityFramework CodeFirst

AGG :

public class Trainee: Entity 
    { 
     public int TraineeId { get; set; } 

     public string Name { get; set; } 
     public int Age { get; set;} 
     public virtual List<CoursesTypes> CoursesOpted { get; set; } 

    } 

열거 :

public enum CoursesTypes 
    { 
     PHP, 
     Networking, 
    } 
+0

같이 할 것입니다 : http://stackoverflow.com/questions/28429945/ef-property-of-type-listenum-not -created-in-db? noredirect = 1 # –

답변

0

그것은 그들이 객체의 표준 속성을있을 때 열거 형 정수로 저장되는 것을 나의 이해이다. 하지만 열거 형 컬렉션을 속성으로 사용할 때 어떤 일이 발생하는지 잘 모르겠습니다. 그것은 가능해야한다고 생각하지 않습니다.

이 링크는 Entity Framework (http://www.itorian.com/2012/09/enum-support-code-first-in-entity.html)에서 열거 형 지원에 대한 자세한 정보를 제공해야합니다.

Incidently, 당신은 당신이 처음 DbSet 코드를 사용하는 경우 법인에서 파생 할 필요가 없습니다 내가 컬렉션 속성의 서명

public virtual ICollection<CourseTypes> CourseOpted {get; set;} 

을 사용하는 것이 좋습니다 것입니다.

0

플래그 열거 형을 사용하십시오. 추가 테이블이 필요하지 않습니다. 훨씬 더 빠릅니다. 모델에서

당신은 잘못

var person = new Trainee(); 
p.CoursesOpted.Add(CoursesTypes.PHP); 
p.CoursesOpted.Add(CoursesTypes.PHP); 

을 ... 할 수 있습니다. 답변과 같은 질문이 플래그를 사용하면 그

p.CoursesOpted = CoursesTypes.PHP | CoursesTypes.Networking; 

http://blog.falafel.com/entity-framework-enum-flags/