2013-10-05 4 views
1

저는 VS2012에서 MVC4 및 EF 데이터를 활용하는 프로젝트를 진행하고 있습니다. 테이블에 필드 이름에 "id"가없는 기본 키가 있으므로 EF는이를 기본 키로 사용해야 함을 이해하지 못합니다. EF가 코드를 생성 한 후 다음 주석을 추가하고 명령문을 사용합니다.EntityFrameWork DataFirst 및 MVC

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 

public partial class Game 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int GameNumber { get; set; } 

생성 코드에서 내 모델을 기반으로하는 경우 데이터베이스 모델을 업데이트하면 사용자 지정 변경 사항이 삭제됩니다. 어떻게 사용자 정의 변경 사항을 유지하고 데이터베이스 EF 데이터 모델을 업데이트 할 수 있습니까?

감사

+0

edmx 다이어그램에서이를 PK로 표시하십시오. 하지만 edmx를 처음 만들 때 EF가 기본 키로 인식하지 못했던 이유는 무엇입니까? 데이터베이스에 PK로 정의 된 경우 있어야합니다. –

+0

답변을 얻었으나 edmx에서 이러한 작업을 수행 할 수 있습니다. 친구 클래스는 필요 없습니다. 나는 왜 당신이 가게 모델에 PK를 갖고 있지 않는지 궁금해. –

답변

0

사용 MetadataTypeAttribute (MSDN)는 그 메타 데이터 클래스의 속성을 장식, 당신의 엔티티 클래스의 부분적인 구현에 메타 데이터 클래스를 정의합니다.

데코 레이팅 된 부분 클래스 구현은 DB에서 새로 고침을 유지할 수 있도록 자동 생성 된 파일 이외의 파일에 있어야합니다.

(질문 : 모델이 DB이면 먼저 Game 테이블의 PK를 알 수없는 이유는 무엇입니까? 마지막에 속성이 Id인지 여부는 테이블 스키마를 읽을 때 문제가되지 않습니다. 모델 생성 ...)

[MetadataType("GameMetadata")] 
public partial class Game 
{ 
    public class GameMetadata 
    { 
     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.None)] 
     public int GameNumber; 
    } 
} 
+0

완벽한, 내가 찾고있는 것을 발견했습니다. – Gearbolt

관련 문제