2017-05-23 8 views
0

에게 나는 아래의 특성을 가진 기업이단순한 프로퍼티 및 탐색 속성 간의 매핑을 가져 엔티티 프레임 워크 5

public int ParentLocationID {get; set;} 
public int ChildLocationID {get; set;} 

을 탐색 속성 : 여기, 두

public Location Location1 {get; set;} 
public Location Location2 {get; set;} 

간단한 등록 정보는 위치 테이블과의 외래 키 관계를 참조합니다. 모델에 대한 Designer.cs를 열 때이 정보를 사용할 수 있습니다.

하지만 코드에서 ParentLocationID가 Location1 또는 Location2 탐색 속성을 사용하고 있음을 어떻게 알 수 있습니까?

+0

엔티티 클래스를 게시 할 수 있습니까? 또한이 페이지를 확인할 수 있습니다. http://www.learnentityframeworkcore.com/configuration/data-annotation-attributes/foreignkey-attribute. – Miguel

+0

@Haksu 엔티티 클래스는 추가 간단한 속성으로 언급 한 것과 유사합니다. 또한 나를위한 시나리오는 IEntityCollection의 시나리오가 아닙니다. 그것의 일대일 매핑. – Mustafa

답변

1

ForeignKey 주석을 사용 하시겠습니까?

using System.ComponentModel.DataAnnotations.Schema; 

public class MyModel 
{ 
    public int ParentLocationID {get; set;} 
    public int ChildLocationID {get; set;} 

    [ForeignKey("ParentLocationID")] 
    public Location Location1 {get; set;} 
    [ForeignKey("ChildLocationID")] 
    public Location Location2 {get; set;} 
} 

이게 무슨 뜻이야?

+0

옵션으로 사용할 수 있습니다. 답장을 보내 주셔서 감사합니다. – Mustafa

0

그러나 코드에서 ParentLocationID가 어떤 탐색 속성 인 Location1 또는 Location2를 사용하고 있는지 어떻게 알 수 있습니까?

EDXM 모델 탐색기에서 탐색 속성의 이름을 바꿀 수 있습니다. 탐색 속성을 마우스 오른쪽 버튼으로 클릭하고 Location1 대신 이름을 변경하면 ParentLocation으로 변경할 수 있습니다.

데이터베이스에서 모델을 여러 번 업데이트하면 문제가 해결되지 않습니다. 그러나 EDMX에서 테이블을 완전히 삭제했다가 다시 만들면 다시 이름을 바꿔야합니다 (그러나 거의 수행되지는 않습니다).

+0

답장을 보내 주셔서 감사합니다. 그러나 나는이 접근법을 사용하기를 원하지 않습니다. 프록시에서 참조를 어디서나 업데이트해야 할 것입니다. – Mustafa

+0

어떤 프록시에 대해 이야기하고 있습니까? – CodingYoshi

+0

@Mustafa 자동 생성 된 코드에 대해 이야기하는 중이면 모두 이름이 바뀝니다. 이것은 db 첫 번째 접근 방식에서 일을하는 일반적인 방법입니다. – CodingYoshi