2011-08-09 3 views
0

아무런 문제가 없습니다. 이것은 내 개인적인 이해를위한 것입니다. MVC3 + EF 4.1 코드 우선 사용. 프로비저닝과 제정안 사이에 일대일 관계를 만들려고합니다.DbSet <EntitySet>이 주석으로 처리 될 때 내 데이터베이스에서 테이블을 만드는 이유는 무엇입니까?

DbSet<Provision>DbSet<Enactment>을 만드는 일반적인 방법을 사용해 보았습니다. 그러나, 그것은 EF가 그것을 좋아하지 않는다는 것이 밝혀졌습니다. 주체/종속 관계를 정의하기 위해 OnModelCreation 재정의를 변경해야했습니다 (fyi Provision은 principal, Enactment dependent). 어떤 이유로 든 오류와 예외가있었습니다. 그래서 나는 뭔가 창조적 인 태도를 시도했다 :

나는 내 컨텍스트에서 public DbSet<Enactment> Enactments { get; set; } 라인을 주석 처리했다. 그럼에도 불구하고 내 Provision 클래스는 여전히 public virtual Enactment Enactment { get; set; } 속성을 요구합니다. Provision은 Enactment 클래스 자체의 객체를 Enactment 속성에 저장하게 만들 것이라고 생각했습니다. (이상한 소리가 들리면 한 달 전에 프로그래밍을 마치고 여전히 배우면서 사과드립니다.) Provision.Enactment.<EnactmentProperty>을보고 제정안에 액세스 할 수 있다고 생각 했으므로 받아 들일 수있었습니다.

놀랍게도 DbSet을 주석 처리 했더라도 db는 제 Enactment 클래스 속성에 매핑 된 Enactments 테이블을 만들었습니다. 그래서 무엇보다 기대했던 것보다 더 나은 결과를 얻은 것처럼 보이지만, 지금은 코드의 논리를 이해하지 못합니다. 특정 DbSet에 주석을 달고 상황에서 정상적인 테이블을 얻고 있습니까? 나는 불을 가지고 노는 것이고이 방법에서 벗어나야합니까?

답변

0

논평 DbSet은 중요하지 않습니다. EF 코드는 엔티티와 매핑을 검사하고 매핑되어야하는 모든 클래스를 유추하는 몇 가지 규칙을 사용합니다. 따라서 어떤 엔티티를 설명하는 유창한 매핑이 있거나 DbSet에서 명시 적으로 언급 한 엔티티가 있거나 다른 클래스 (entity = EF가 기본 키를 추론 할 수 있음)에 네비게이션 속성이있는 경우 매핑됩니다.

+0

이 부분을 들여다 볼 수 있습니까? http://stackoverflow.com/questions/13634819/entityset-system-invalidoperationexception-theentent-type-is-not-part-of-the 나는 그것을 잘못 쓰레기를 찾을 수 없으며 그것은 내 견과를 운전. 왜 내가 InternalSet의'EntitySet'을 제대로로드 할 수 없는지를보기 위해 MS의 심볼을로드 할 수 없다. –

관련 문제