2013-09-06 9 views
1

이것은 EF 5 및 데이터베이스 첫 번째 모델링에 적용됩니다. 내 모델은 기존 DB에서 EF 생성기를 사용하여 만들어졌습니다.EDMX 덮어 쓰기 주요 데이터 주석

기본 키 필드의 이름이 EF 규칙과 일치하지 않기 때문에 모델 클래스에서 [Key] 데이터 주석을 사용하고 있습니다.

모든 것이 작동하지만 루트 EDMX 파일을 열면 모델 클래스가 업데이트되고 내가 직접 변경 한 사항은 손실됩니다.

변경 사항을 다른 방식으로 변경해야합니까?

답변

1

기본 키에 데이터 주석을 추가하도록 T4 템플릿을 업데이트 할 수 있습니까?

if (simpleProperties.Any()) 
{ 
    foreach (var edmProperty in simpleProperties) 
    { 
    if (ef.IsKey(edmProperty)){ 
#> 
[Key] 
<# } #> 
+0

이전에 tt 파일로 작업 한 적이 없습니다. simpleProperties에서 "현재 컨텍스트에 존재하지 않습니다"오류가 발생하며 온라인에서 어떤 설명서도 찾을 수 없습니다. 내가 배운 어떤 지시라도? – tintyethan

+0

@EthanPelton - tt 파일에서 66 행을 확인하십시오. 이미 foreach가 변수 simpleProperties –

+0

과 함께 표시되어 있어야합니다. 내 문제가 해결되었습니다. 나는 그것이 왜 기본적으로 존재하지 않는지 궁금하다. – almaz

0

나를 위해 작동 한 솔루션은 컨텍스트 클래스의 OnModelCreating 메서드에서 EF 규칙을 오버라이드했습니다.

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<abk_Bookings>() 
        .HasKey(e => e.booking_number);}