2012-11-15 2 views
0

나는 답을 찾고자했지만 어딘가에서 내 질문에 답을 얻었지만 그 답을 얻지 못했습니다. 두 테이블이 독립적이지만 관련이 있습니다. 나는 EF에서 수업을 다룬다. C#에서 none 또는 one to many 관계로 모델을 만들고 싶습니다. 코드에서 어떻게 수행합니까? 다음은 내 두 모델은 다음과 같습니다내 데이터베이스에 처음으로 관계를 작성하는 방법

public class adult 
{ 
     [Key] 
    public int ID { get; set; } 
    [StringLength(50, ErrorMessage = "{0} cannot exceed {1} characters")] 
    public string LastName { get; set; } 
    public string Initials { get; set; } 
    public string Title { get; set;} 
    public string Address1 {get; set;} 
    public string Address2 {get; set;} 
} 

아래 많은 '아이'와 두 번째 모델이다.

public class children 
{ 
    [Key] 
    public int childNo { get; set; } 
    public string favourite { get; set; } 
    **public int childID { get; set; }** 

    [Required] 
    [StringLength(50, ErrorMessage = "{0} cannot exceed {1} characters")] 
    public string colour { get; set; } 
    public DateTime DateReceived { get; set; } 
    public DateTime DatePaid { get; set; } 
} 

나는 관계없이 하나 또는 여러 개의 관계에 관심이있다. 즉, 나는 아이 없이는 어른을 가질 수있다. children 클래스의 childID는 성인 클래스의 ID와 일치합니다. children 클래스에있는 많은 childID와 일치하는 클래스에 하나 또는 하나의 ID가 없습니다. 수업 시간에 이것을 어떻게 모델링합니까? 또한 매핑 된 값을 하나의보기에 표시하고 변경 사항을 편집, 생성 및 저장하는 데 관심이 있습니다.

답변

0

대답은 Entity Framework 코드가 먼저 일대일, 일대 다 및 다 대다 자체와 같은 관계를 생성한다는 것입니다. 그리고 당신은 두 모델 사이를 이동하므로 코드를 추가 할 수 있습니다 가상 속성을 사용하여 울부 짖는 첫 번째 모델 :

public virtual ICollection<children> children_{ get; set;} 

그런 다음 두 번째 모델로이 추가

[Required] 
public virtual adult adult_{ get; set;} 

이 한 대를 나타냅니다 아이들과 어른 사이의 많은 관계. [필수] 모든 자녀가 반드시 부모 (성인)를 가지도록하여 null이 될 수 없도록합니다. 현재 모델에서 다른 모델의 관계형 ID를 추가 할 필요가 없습니다. 그래서 코드의이 부분은 일반적으로 사용되지 않는 사용 :

public int childID {get; set;} 

당신이 두번째 모델에서 위의 코드를 사용하려는 경우, 탐색 DB에 나타납니다. 그것을 수동으로 컨트롤러에 탑재하고 컨트롤러와 같은 코드에서 테이블을 탐색해야합니다. 그러나 가상 속성을 사용하여 EF는 모델 간의 탐색을 위해 이와 같은 관계 키를 생성합니다.이 기술을 사용하면 테이블을보고, childID라는 이름의 열을 찾을 수 있습니다 자동으로 작성된 테이블.

+1

감사합니다. Amir fo 응답. EF 모델은 childID가 성인 클래스의 ID와 관련이 있다는 것을 어떻게 알 수 있습니까? – Sithelo

+0

명확성을 가져 주셔서 감사합니다. 나는 그 변화를 만들었고 나는 그것이 작동하는지 시험 할 필요가있다. 내 질문에서 당신은 내가 그 가치관을 어떻게 보여줄 수 있는지를 물어볼 것입니다. – Sithelo

0

멤버를 호출하는 것처럼 간단합니다.

var childno = db.adult.child.ChildNo; 

또는 검색을위한

:

string favor = db.adult.child.Find(input.id).Select(s => s.favourite).ToString(); 

아이 모델은 이제 성인의 회원이며, 당신이이 같은 코드를 사용할 수있는 특정 성인 관련되는 어린이 알고 싶어 예를 들어, 성인은 자녀의 ICollection에 자녀가있을 수 있습니다.

관련 문제