2009-05-05 3 views
2

왜 SqlMetal이 연결 이름을 엉망으로 만들고 있습니까? 예 : 내 'TextMessage'테이블에서 'ApplicationUser'테이블을 참조하는 두 개의 열이 있습니다. 'SenderUserId'와 'RecipientUserId'가비지 연결 이름을 생성하는 SqlMetal

내가 SqlMetal을 실행하고 'RecipientUserId'을 내 'ApplicationUser'클래스

볼 때이 생성

[Association(Name="FK__TextMessa__Recip__72910220", Storage="_TextMessages", ThisKey="Id", OtherKey="RecipientUserId", DeleteRule="NO ACTION")] 
     public EntitySet<TextMessage> TextMessages 
     { 
      get 
      { 
       return this._TextMessages; 
      } 
      set 
      { 
       this._TextMessages.Assign(value); 
      } 
     } 

와 'SenderUserId'에 대한

가이 쓰레기를 생성 명명 된 속성 :

[Association(Name="FK__TextMessa__Sende__73852659", Storage="__TextMessa__Sende__73852659s", ThisKey="Id", OtherKey="SenderUserId", DeleteRule="NO ACTION")] 
     public EntitySet<TextMessage> _TextMessa__Sende__73852659s 
     { 
      get 
      { 
       return [email protected]__TextMessa__Sende__73852659s; 
      } 
      set 
      { 
       t[email protected]__TextMessa__Sende__73852659s.Assign(value); 
      } 
     } 

어떻게 해결할 수 있습니까? 이것은 사용할 수 없습니다. SQL 코드를 Linq 생성하는 더 좋은 방법이 있나요 ???

답변

1

당신은 DBML 파일을 생성하는 SqlMetal을 지시 할 수 있습니다 다음 DBML에서 생성 한 후

SqlMetal /server:myserver /database:northwind /dbml:northwind.dbml /namespace:nwind 

을 다음 DBML 파일에 연결 이름을 수정하고 :

SqlMetal /code:nwind.cs /map:nwind.map northwind.dbml 

유일한 문제를 일을 이것은 데이터베이스를 업데이트 한 후에 DBML을 다시 생성하면 DBML의 변경 사항이 사라지게된다는 것입니다.

다른 옵션 :

  • 를 사용하여 비주얼 스튜디오의 디자이너 타사 도구에 대한
  • 검색은 자신의 도구를 쓰기 DataContexts에게
  • 를 생성하기 위해 (스키마가 큰 경우 큰되지 않음)

또 하나의 요점 : SqlMetal이 연결 이름을 나쁘게 보내는 것을 거의 보지 못했습니다. 열 이름이 어떻게됩니까? 다른 관계 이름과 충돌이 있습니까?

2

외부 키를 기반으로 이름을 생성 중입니다. 외래 키의 이름을 자동 생성 된 이름보다 읽기 쉬운 이름으로 지정하십시오. 예 :

제약 조건받는 사람 메시지 FOREIGN KEY (RecipientUserId) 참조 ApplicationUser (사용자 ID)