2013-11-25 3 views
1

엔티티 프레임 워크에서 데이터베이스 레코드를 복제하려고하지만 SQL Server에서 생성하지 않은 GUID 인 개체 그래프의 ID 필드를 어떻게 처리하는지 궁금합니다.ID로 클라이언트 생성 GUID가있는 엔티티를 어떻게 복제합니까? (Model-first)

스택 오버플로에서 발견 한 메서드를 시도했지만 ID가 정수이고 사용 사례에 맞지 않습니다 (시도했을 때 예외가 있음). 엔티티 디자이너에서 아이덴티티에 패턴을 생성하는 패턴을 설정하는 것이 이론적으로 GUID를 생성해야한다는 것을 알고 있지만 그 옵션은 나에게 모두 0 인 GUID를 부여하게됩니다. 두 번째 레코드를 삽입하려고하면 중복 ID와 관련하여 예외가 발생합니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

1

당신은 같은 테이블에 새 행을 삽입하여 기존 행을 복제하는 경우, 난 그냥 NEWID() 값을 원래 행의 GUID를 대체 할 것이다 :

INSERT INTO dbo.SomeTable(ID, Col1, Col2, ...., ColN) 
    SELECT 
     NEWID(), -- get a new GUID for the new row 
     Col1, Col2, ...., ColN 
    FROM 
     dbo.SomeTable 
    WHERE 
     ID = (some value defined here) 

당신은 저장 프로 시저에이 포장 수 , 예. CREATE PROCEDURE CloneSomeTableRow @SomeID UNIQUEIDENTIFIER 그리고 Entity Framework 컨텍스트에서 호출하십시오.