2012-11-07 2 views
0

코드 첫 번째 방법으로 EF 5를 사용합니다. 이제 여러 다른 코드 (예 : 주소 코드, 중간 코드 등)를 갖고 싶은 "코드"테이블을 정의하려고합니다. 이 표에는 ID (Guid), 이름 (String), 설명 (String) 및 판별 자 (코드 유형과 같은 항목 : 주소 코드, 중간 코드 등)의 속성 만 있습니다. 코드 첫 번째 계층 당 유형

그래서 나는 다음과 같은 기본 클래스 정의 :
public abstract class Code : EntityBase 
{ 
    public string Name { get; set; } 
    public string Beschreibung { get; set; } 
} 

가 그럼 난 코드

public class AddressCode : Code {} 
public class MediumCode : Code {} 

클래스 EntityBase 추상적이고 단지 Id 속성을 정의에서 두 개의 클래스를 파생를, 우리는 모든을 위해 사용 POCO 클래스 ...

목표는 내 주소 POCO 클래스의 속성으로 AddressCode를 사용할 수 있다는 것입니다.

public class Adresse : EntityBase 
{ 
    #region Properties 
    public string Name1 { get; set; } 

    public virtual AddressCode AddressCode { get; set; } 
    #endregion 
} 

지금 질문은 어떻게 할 수 있습니까? 누구든지 도울 수 있니?

감사 마르코


답변에 대한

감사합니다!

나는 당신이 말한 것처럼 그것을하려고했습니다. 불행하게도, 난 때문에 내 EntityBase 클래스의 오류 :

public abstract class EntityBase 
{ 
    #region Properties 

    public virtual Guid Id { get; set; } 

    public virtual bool IsValid 
    { 
     get 
     { 
      { 
       return Validate(); 
      } 
     } 
    } 

    [NotMappedAttribute] 
    public virtual IList<ValidationFailure> ValidationFailures { get; set; } 

    #endregion 

    #region Methods 

    private bool Validate() 
    { 
     var validatorFactory = new AttributedValidatorFactory(); 
     IValidator validator = validatorFactory.GetValidator(GetType()); 

     if (validator == null) 
     { 
      return true; 
     } 

     ValidationResult validationResult = validator.Validate(this); 

     ValidationFailures = validationResult.Errors; 

     return validationResult.IsValid; 
    } 

    #endregion 
} 

오류 메시지는이 유형은 상속 때문에 당신은 유형 'Entities.AdresseCode'에 재산 'ValidationFailures'에 방법을 무시 사용할 수 없습니다 이 속성이 매핑되는 'Entities.EntityBase'를 입력하십시오. 모델에서이 속성을 제외하려면 기본 형식에 NotMappedAttribute 또는 Ignore 메서드를 사용합니다.

나는 이미 ValidationFailures 속성을 NotMapped로 정의했지만 여전히이 오류가 있습니다. 아이디어가 있습니까?

감사 마르코

답변

0

그냥 기본 테이블 및 열 이름을 가진 데이터베이스를 생성하는 (DbContext에서 파생 된) 상황에 맞는

public class AddressesDb : DbContext 
{ 
    public DbSet<Code> Codes { get; set; } 
    public DbSet<Adresse> Adressen { get; set; } 
} 

그리고 (코드에 사용) EF를 만들 수 있습니다. Code에서 파생 된 클래스의 이름을 포함하는 텍스트 형식의 식별자 열 (nvarchar)을 만듭니다.

다른 이름 및/또는 유형을 원하면 data annotations 또는 fluent API을 사용해야합니다.

0

마침내 작동했습니다!

DBContext에서는 다른 모든 POCO보다 먼저 코드 파생 클래스에 대한 DbSets를 정의한 다음 작동합니다.

관련 문제