2011-02-16 7 views
2

내가 부모 테이블과 자식 테이블 간의 매우 간단한 설치를 참조코드 첫 번째와 부모 - 자식 내가 코드 첫 번째 CTP (5)를 사용하고

Create table testA (
    id int not null identity(1,1), 
    stuff varchar(200), 
    primary key (id) 
    ); 
go 

create table testB (
    id int not null 
     foreign key references testA(id), 
    morestuff varchar(200), 
    primary key (id) 
    ); 
go 

코드 먼저, 우리가 사용하여 이러한 테이블을 참조하십시오 다음과 같은 구조 :

내가 종피에 레코드를 추가하려고하면, 나는 오류가
namespace Test.Models 
{ 
    public class TestEntities : DbContext 
    { 
     public DbSet<testa> testa { get; set; } 
     public DbSet<testb> testb { get; set; } 

     protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 

      modelBuilder.Entity<testa>().ToTable("testa"); 
      modelBuilder.Entity<testa>() 
       .Property(p => p.id) 
       .HasDatabaseGenerationOption(DatabaseGenerationOption.Identity); 

      modelBuilder.Entity<testb>().ToTable("testb"); 
     } 
    } 


    public class testa 
    { 
     public int id { get; set; } 
     public String stuff { get; set; } 

     public virtual testb testb { get; set; } 
    } 

    public class testb 
    { 
     public int id { get; set; } 
     public string morestuff { get; set; } 

     public virtual testa testa { get; set; } 
    } 
} 

"IDENTITY_INSERT가 OFF로 설정되어있을 때 테이블 '테 스타'의 ID 열에 명시 적 값을 삽입 할 수 없습니다."

확인. Id가 ID 열임을 인식하지 못했을 때 Code First에 1을가하십시오. 우리는이 문제를 해결할 수 있습니다, 그래서 우리는 testa.id는 정체성이다 CodeFirst 알려주기 :

modelBuilder.Entity<testa>() 
     .Property(p => p.id) 
     .HasDatabaseGenerationOption(DatabaseGenerationOption.Identity); 

우리가 다시 실행하고 다른 오류가 수행 : "는 ReferentialConstraint에 종속 속성은 가게에서 생성 된 컬럼에 매핑 컬럼 : 'id' ". 그래서이 그림이 왜 잘못 됐나요?

내가 뭘 잘못하고 어떻게 해결합니까 ???

답변

3

1 : 1 연관에서 코드 첫 번째는 엔티티 중 하나를 주체로 인식하고 다른 하나는 종속으로 인식합니다. 그런 다음 주체 PK를 ID로 만들고 종속 테이블에 삽입 할 때 유효한 고유 한 PK를 처리해야합니다. 귀하의 경우에는 testb을 교장으로 선택하지만 testa이이 연결의 주된 끝인 것으로 보입니다. 이것은 유창하게 API를 사용하여 기본적으로 코드 처음에 힌트를 제공함으로써 달성 될 수있는 약은 교장 하나는 종속 된 :
Associations in EF Code First CTP5: Part 2 – Shared Primary Key Associations

:

자세한 내용은
protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<testb>() 
       .HasRequired(b => b.testa) 
       .WithOptional(a => a.testb);     
} 

는이 문서에서 살펴

관련 문제