0

다음 문제를 해결하는 방법을 알 수 없습니다. 나는 하나의 기본 클래스에서 다른 클래스로 관계가 필요하기 때문에, 모든 파생 클래스가 내 테이블에서 'Item'이라는 동일한 테이블과의 관계를 갖습니다.엔티티 프레임 워크 4, 코드 전용, 관계

이것은 단지 예일 뿐이므로 내 프로그램을 반영하지 않습니다. 실제 프로그램에서 클래스 Item과의 관계는 다른 네임 스페이스에 있습니다. 따라서 파생 클래스에있을 수 없습니다.

오류 : 키를 파생 형 'WebApplication1.Client'에 등록되어

. 키 유형은 'WebApplication1.Base'루트 유형으로 등록해야합니다. 여기 상속 매핑 처리 어떻게에서

namespace WebApplication1 
{ 
    public class Item 
    { 
     public int ItemID { get; set; } 
    } 

    public class Base 
    { 
     public int ID { get; set; } 
     public int ItemID { get; set; } 

     public Item Item { get; set; } 

    } 

    public class Client : Base 
    { 
     public string Name { get; set; } 

     private List<Project> _projects = null; 

     public List<Project> Projects 
     { 
      get 
      { 
       if (_projects == null) 
        _projects = new List<Project>(); 

       return _projects; 
      } 
     } 
    } 

    public class Project : Base 
    { 
     public string Name { get; set; } 

     public int ClientId { get; set; } 

     public Client Client { get; set; } 

    } 

    public class Main 
    { 
     public static void Test() 
     { 
      ContextBuilder<ObjectContext> ContextBuilder = new ContextBuilder<ObjectContext>(); 

      var itemConfig = new EntityConfiguration<Item>(); 
      itemConfig.HasKey(p => p.ItemID); 
      itemConfig.Property(p => p.ItemID).IsIdentity(); 
      ContextBuilder.Configurations.Add(itemConfig); 

      var clientConfig = new EntityConfiguration<Client>(); 
      clientConfig.HasKey(p => p.ID); 
      clientConfig.Property(p => p.ID).IsIdentity(); 
      clientConfig.Property(p => p.Name); 
      clientConfig.Relationship(p => p.Item).HasConstraint((p, c) => p.ItemID == c.ItemID);   
      ContextBuilder.Configurations.Add(clientConfig); 

      var projectConfig = new EntityConfiguration<Project>(); 
      projectConfig.HasKey(p => p.ID); 
      projectConfig.Property(p => p.ID).IsIdentity(); 
      projectConfig.Property(p => p.Name); 

      projectConfig.Relationship(p => p.Item).HasConstraint((p, c) => p.ItemID == c.ItemID); 

      projectConfig.Relationship(p => p.Client).FromProperty(p => p.Projects).HasConstraint((p, c) => p.ClientId == c.ID); 

      ObjectContext objCtx = ContextBuilder.Create(new SqlConnection(@"Data Source=(local);Initial Catalog=testa;Integrated Security=SSPI;")); 

      if (!objCtx.DatabaseExists()) 
       objCtx.CreateDatabase(); 

     }  
    }  
} 

답변

관련 문제