EF 7 베타 6 : EF 7에서 일대 다 관계가있는 개체

c# entity-framework entity-framework-core

문제

나는 아주 간단한 모델을 가지고있다 :

class Bag
{
    public int Id { get; set; }
    public ICollection<RandomThing> RandomThings { get; set; }
}

class RandomThing
{
    public int Id { get; set; }
    public String Description{ get; set; }
}

내 컨텍스트의 OnModelCreating ( EF 6 )은 다음과 같습니다.

class Bag
{
    public int Id { get; set; }
    public ICollection<RandomThing> RandomThings { get; set; }
}

class RandomThing
{
    public int Id { get; set; }
    public String Description{ get; set; }
}

내가 알 수있는 한이를 수행하는 동등한 방법은 없습니다. 계단식 삭제가 지원되지 않는다는 것을 알고 있습니다. 그러나 필자는 코드 예제에서 정의한대로 많은 관계를 모델링하는 가장 좋은 방법은 무엇인지 궁금합니다. 그 모든 것들이 사라 졌거나 아직 구현되지 않은 것처럼 보입니다.

나는 (예를 들어 본 여기 )를의 DbContext 정확하게 내가 원하는 방법과 같은,하지만 실제로 잘못 작동하지 않습니다. 해당 소스 코드를 풀고 환경을 설정하고 게시물이 포함 된 블로그 엔티티에서 저장을 시도하면 해당 게시물이 상상할 수있는 것처럼 저장되지 않습니다.

이 문제를 해결할 수있는 방법이 있습니까?

수락 된 답변

업데이트 :이 답변은 EF7 beta7 용으로 작성되었습니다. 이후 API가 변경되었습니다. EF 코어 사용에 대한 최신 정보는 http://docs.efproject.net/en/latest/modeling/relationships.html 을 참조 하십시오 .

원문 답변

EF 7에서는 OnModelCreating 메서드에서 일대 다 관계를 구성 할 수 있습니다. 이 기능을 사용하려면 RandomThing에 속성을 추가하여 forign 키를 나타내며 상위 유형에 대한 CLR 참조를 추가합니다.

class Bag
{
    public int Id { get; set; }
    public ICollection<RandomThing> RandomThings { get; set; }
}

class RandomThing
{
    public int Id { get; set; }
    public String Description{ get; set; }

    public Bag Bag { get; set; }
    public int BagId { get; set; }
}

사용자 환경에서 다음 설정을 사용하여 관계를 구성하십시오.

class Bag
{
    public int Id { get; set; }
    public ICollection<RandomThing> RandomThings { get; set; }
}

class RandomThing
{
    public int Id { get; set; }
    public String Description{ get; set; }

    public Bag Bag { get; set; }
    public int BagId { get; set; }
}

사이드 노트 : EF 7이 속성을 통해이를 구성하는 대신 지원을 추가 할 계획 인 경우.


인기 답변

EF7을 전혀 사용하지 않았지만 EF6에서는 모델을 다음과 같이 만듭니다.

class Bag
{
    public int Id { get; set; }
    public virtual ICollection<RandomThing> RandomThings { get; set; }
}

class RandomThing
{
    public int Id { get; set; }
    public String Description{ get; set; }

    public int BagId {get; set;}
    [ForeignKey("BagId")]
    Public Bag Bag {get; set;}
}

이 방식으로 데이터 주석으로 관계가 처리되고이 특정 작업에 model builder 가 필요하지 않습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.