1

MVC 모델 내에서 상속을 사용하려고합니다. 프로젝트에 사용자가 일부 장비에 손상을 등록 할 수있는 곳이 2 곳 있습니다. 이동 중이거나 재고 계산 중일 때. 는 내가 가진 : 운송 운송 세부상속을 사용하여 MVC 모델을 매핑하는 방법

는 StockCheckDetails

세부 모델은 모두 오브젝트의 일부 유형의 모음을 StockCheck. 하나의 세부 항목에 대해 단일 피해 기록을 만들 수 있습니다. 손상의 세부 사항을 기록 할 수있는 추상 손상 모델을 만들었습니다.

그래서 나는 다음 TransportDetailDamage 및 StockDetailDamage

내 TransportDetail 기록은 다음 중 하나를 0 또는 1 TransportDetailDamage 기록을 가질 수 있습니다 손상 에서 상속이 개 모델을 가지고있다. StockCheckDetail 레코드는 0 또는 1 개의 StockDetailDamage 레코드를 가질 수도 있습니다.

나의 현재 모델 (단지 수송 대부분의 소품은 간결 제거)됩니다

public class TransportDetail { 
    public int TransportDetailID { get; set; } 

    public int TransportID { get; set; } 
    public Transport Transport { get; set; } 

    public TransportDamage TransportDamage { get; set; } 
} 
public abstract class Damage { 
    public int DamageID { get; set; } 
    public string Description { get; set; } 
} 
public class TransportDamage : Damage { 
    public TransportDetail TransportDetail { get; set; } 
} 

내가 정의 키를 무효로하는 주요 끝에서 오류 alsorts 점점 계속. 내가 TransportDamage_DamageID 등의 좋아와 끝까지하지 않도록 나는 또한 아주 많이 유창함 API를 사용하여 필드 이름을 정의 할 수 있도록하고 싶습니다

편집 : 확인 내가 허용 할 것 몇 가지 유창함 API를 추가했습니다 모델은 제대로 작동하지만 완전히 정확하지는 않습니다. TransportDetail에는 Optional TransportDamage가있을 수 있지만 TransportDamage는 TransportDetail이 필요합니다 .... .Map은 데이터베이스의 끔찍한 자동 필드 이름을 처리합니다. :)

modelBuilder.Entity<TransportDetail>() 
    .HasOptional(x=>x.TransportDamage) 
    .WithOptionalPrincipal(x=>x.TransportDetail) 
    .Map(t=>t.MapKey("TransportDetailID")); 

이렇게하는 것이 가장 좋은 방법입니까?

답변

0

이 문제는 클래스의 속성 정의 때문일 수 있습니다. TransportDetail 클래스에 "TransportDamage"유형의 속성을 정의하고 TransportDamage 클래스에 "TransportDetail"유형의 속성을 정의했습니다.

+0

그렇다면 내가 아는 한 두 엔티티간에 네비게이션을 제공하는 방법이 무엇입니까? – Pyrobri

관련 문제