2013-03-03 3 views
1

서비스 모델과 일대일 관계가있는 트랜잭션 모델이 있고 서비스 모델에 많은 ServiceAddons가 있습니다. 일대일/일대일

public class Transaction 
{ 
    public int TransactionId {get;set;} 
    public string Username {get;set;} 
    public Service OccasionService {get;set;} 
} 

public class Service 
{ 
    [Key] 
    public int TransactionId {get;set;} 
    public Transaction Transaction { get; set; } 
    public virtual IList<ServiceAddon> ServiceAddons { get; set; } 
} 

public class ServiceAddon 
{ 
    public int ServiceAddonId { get; set; } 
    public int TransactionId { get; set; } 
    public int AddonId { get; set; } 
    public decimal AddonPrice { get; set; } 
    public virtual Addon Addon { get; set; } 
} 

이제 패키지 관리자 콘솔이 OccasionServiceId이 ServiceAddon에 존재하지 않는 것을 저에게 말하고있다

는 그래서, 그것을 위해 컴파일 된 프로그램을는 TransactionId을 변경하지만 지금은 잘못된 열 OccasionServiceId는 말한다. 어떻게 해결할 수 있습니까?

답변

2

ForeignKey 초를 지정해야합니다. 다음과 같이 시도하십시오. 불분명 한 비트에 대한 주석을 추가했습니다. 답변에 대한

public class Transaction 
{ 
    [Key] 
    public int TransactionId {get;set;} 
    public string Username {get;set;} 
    public int ServiceId {get;set;} 

    [ForeignKey("ServiceId")] 
    public Service Service {get;set;} 
} 

public class Service 
{ 
    [Key] 
    public int ServiceId {get;set;} 
    public int TransactionId {get;set;} 

    [ForeignKey("TransactionId") 
    public Transaction Transaction { get; set; } 

    [ForeignKey("TransactionId")] // What on ServiceAddon points at Service's Key 
    public virtual ICollection<ServiceAddon> ServiceAddons { get; set; } 
} 

public class ServiceAddon 
{ 
    [Key] 
    public int ServiceAddonId { get; set; } 
    public int ServiceId {get;set;} 

    [ForeignKey("ServiceId")] 
    public Service Service {get;set;} 
} 
+0

감사 : 여기

public class Transaction { [Key] public int TransactionId {get;set;} public string Username {get;set;} // Whatever the column is public int OccasionServiceId {get;set;} [ForeignKey("OccasionServiceId")] // What on Transaction points to Service's Key public Service OccasionService {get;set;} } public class Service { // Ideally this would be called ServiceId instead? [Key] public int TransactionId {get;set;} // If this uses TransactionId then are you sure you don't need a Key that is ServiceId public Transaction Transaction { get; set; } [ForeignKey("TransactionId")] // What on ServiceAddon points at Service's Key public virtual ICollection<ServiceAddon> ServiceAddons { get; set; } } public class ServiceAddon { [Key] public int ServiceAddonId { get; set; } // Don't you need a ServiceId here? public int TransactionId { get; set; } public int AddonId { get; set; } public decimal AddonPrice { get; set; } public virtual Addon Addon { get; set; } } 

내 모델은 내가 만든 경우처럼 보일 것 인 것이다. 나는 패키지 관리자가 서비스와 트랜잭션 유형 간의 연관성을 결정할 수 없다고 말했다. – WannaCSharp

+0

외래 키와 기본 키인 것처럼 보이는 Service.TransactionId 때문에 그럴 수 있다고 생각하십니까? 두 번째 코드를보십시오. –

+0

다음과 같은 형식이어야합니다 :'Transaction.TransactionId 1 <-> 1 Service.TransactionId'와'Service.ServiceId 1 <-> * ServiceAddon.ServiceId' 나는 'ServiceAddon'으로 응답을 조금 수정했습니다. 행운을 빕니다! Off to bed : P –