2017-02-23 1 views
0

Entity Framework를 사용하여 인터페이스하는 이전 데이터베이스가 있습니다. 필자는 다른 (매우 오래된) 응용 프로그램에서 사용 중이기 때문에 스키마를 너무 많이 변경할 수 없습니다. PK가 될 것으로 예상되는 열에 자체 값을 삽입 할 수 없으면 충돌이 발생합니다.Entity Framework를 통해 기존 테이블의 기본 키 삽입

테이블에 기본 키 제약 조건이 설정되어 있지 않으므로 ID를 사용할 수 없습니다. 그것들은 이 EF 디자이너의 엔터티 키로 설정되어 있습니다 (코드 우선이 아님). Selections는 훌륭하게 작동하지만 삽입시 실패합니다. 왜냐하면 기본 키의 값을 알아낼 수 없기 때문입니다. StoreGeneratedPatternnone, computedidentity으로 설정했지만 아무 것도 작동하지 않았습니다. VS 2013

, EF (6) 나는 (정직 ADO.net Entity Data Model 프로젝트는 지정하지 않기 때문에 확인하는 방법을 잘하지)

+0

음, 직접 PK 값을 제공해야합니다. 데이터베이스가 아무것도 생성하지 않기 때문에'DatabaseGeneratedOption'이 여기에 적용되지 않습니다. –

+1

이 테이블의 열 중 적합한 것이 "가짜"기본 키가됩니까? 즉, 고유 한 값을 포함하고 있습니까? 그렇다면 EF를 기본 키로 사용하여 EF를 속일 수 있으며 그 질문에 답할 수 있습니다. – Amy

+0

EF 대신 삽입 용 저장 프로 시저 사용을 고려 했습니까? – HLGEM

답변

0

하지 멋진 대답을하지만, 여전히 작동 것이라고 생각 : 데이터의 GUID로 ID를 설정 새로운 인서트를위한 액세스 레이어. 위조 된 PK에 의존해야한다면 정상적인 신원보다 성능이 떨어지더라도 여전히 PK 철학과 일치합니다. What are the best practices for using a GUID as a primary key, specifically regarding performance?

때때로 당신은 오래된 사물이 작동하기 위해 나쁜 일을 할 필요가 : 당신이 DB를 변경할 수없는 경우가 슈퍼 도움이되지 않을 수도 있지만

여기에, 몇 가지 중요한 팁입니다. :/

+0

레거시 소프트웨어가 pk 열의 GUID를 보거나 GUID가 여분의 열로 삽입 된 경우 null pk가 표시되기 때문에 레거시 소프트웨어가 엉망이되어서 작동하지 않을 것이라고 생각합니다. 그래도 제안에 감사드립니다! – Zorgarath

관련 문제