2012-11-15 2 views
0

Entity Framework 및 코드 우선을 사용하여 레거시 데이터베이스에 매핑합니다. 데이터베이스가 이미 구축되어 있으면 "데이터베이스 우선"접근 방식을 사용해야하지만 일부는 어떻게하면 디자이너가 제어하는 ​​것보다 손으로 주석을 넣는 것이 더 낫습니다.) 다른 테이블을 가리키는 키가있는 테이블이 있습니다 (실제로 다른 데이터베이스의 테이블과 동의어입니다). 외래 키이지만 테이블 스키마에 실제로 정의되어 있지 않습니다.코드에서 논리적 외래 키의 강제 매핑 먼저

질문 : 나는이 관계를 내 POCO 수업에 강제로 적용 할 수 있습니까? Fluent API를 사용하여이를 매핑 할 수 있습니까? 이것이 가능한가?

언제나처럼, 미리 감사드립니다!

답변

0

물론 유창한 매핑이나 데이터 주석으로 외래 키와 탐색 속성을 수동으로 정의 할 수 있습니다.

의 내가 필드 CatCode 및 제 데이터베이스에서 테이블 Category를 가리키는 동의어 CategoryExParent 테이블이 있다고 가정 해 봅시다. 두 클래스 모두 해당 클래스와 DbSet을 가지고 있습니다. (EntityTypeConfiguration에서 파생 된) 매핑 (생성자)처럼 보일 수 :

public ParentMap() 
{ 
    this.HasKey(t => t.Id); 
    this.HasRequired(p => p.Category).WithMany().HasForeignKey(p => p.CatCode); 
    ... 
} 

public CategoryMap() 
{ 
    this.HasKey(t => t.CatCode); 
    this.ToTable("CategoryEx"); 
    ... 
} 

Parent은 다음과 같습니다

public class Parent 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string CatCode { get; set; } 
    ... 
    public Category Category { get; set; } 
} 
관련 문제