1

MVC 응용 프로그램 내에서 사용하기 위해 일부 외부 테이블 (내가 관리하지 않음)을 "Entitify"하려고합니다. 원칙적으로이 시도 (VS2008 출력)에 성공하지 못했습니다.ADO.NET 엔터티 데이터 모델을 만들려면 반드시 원본 테이블에 PK가 있어야합니까?

오류 목록 [0 오류] [0 경고] [1 메시지]

설명

The table/view 'DATABASE.dbo.table' does not have a primary key defined and no valid primary key could be inferred. 

This table/view has been excluded. To use the entity you will need to review your schema, add the correct keys and uncomment it. 

파일

C:\Documents and Settings\%USERNAME%\My Documents\Visual Studio 2008\Projects\MVC_Entity_Test\MVC_Entity_Test\Models\EmployeesDataModel.edmx 
01 23,516,

라인

0 

1 

프로젝트

MVC_Entity_Test 

출력

보기 출력에서 ​​: 엔터티 데이터 모델

,
Added the connection string to Web.Config. 
Successfully registered the assembly 'System.Data.Entity, Version=3.5.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089' in Web.Config. 
The model was generated with warnings or errors. 
Please see the Error List for more details. These issues must be fixed before 
running your application. 
Loading metadata from database took 00:00:06.2809306. 
Generating model took 00:00:03.0359078. 
Writing out the EDMX file took 00:00:00.0230083. 
Added the connection string to Web.Config. 
Successfully registered the assembly 'System.Data.Entity, Version=3.5.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089' in Web.Config. 
The model was generated with warnings or errors. 
Please see the Error List for more details. These issues must be fixed before running 
your application. 
Loading metadata from database took 00:00:12.3208290. 
Generating model took 00:00:03.6914563. 
Writing out the EDMX file took 00:00:02.1670689. 

그럼 내 질문은 정확히 소스 테이블에 PK를 선언하여 ASP.NET 엔터티로 올바르게 매핑 할 수 있습니까?

참고 : 내가 좋은 표준 기반, 학문적 지원을받는 데이터베이스 모델링에 대한 논문이되기 위해이 스레드를 좋아하지 않을, 것입니다, 내가 어딘가 뷰에서 오는이 외부 테이블을 처리해야, 어딘가에있는 식탁에서 나옵니다. 그래서 그렇게 할 수는 없으므로, 저는 그것에 대해 아무런 통제력이 없습니다. 요점은 그저 내 일을 끝내고 싶다는 것입니다. 결국

을 등 데이터를 벌크로드에 사용되는 테이블과 같은 매우 드문 경우를 제외하고, 단지 기본 키 -

답변

6

:-) 엔터티 프레임 워크는 매핑 프레임 워크, 그래서 고유 객체에 모든 행을지도 할 수있는 방법이 필요합니다. 이렇게하려면 SQL DML 문을 생성하여 행을 수정할 수있는 고유 한 식별자 형식이 필요합니다.

상황에 따라 열 조합에 행을 고유하게 식별하는 NULL이 없으면 수동으로 필요한 정보를 edmx 파일에 추가 할 수 있습니다. 이 MSDN 페이지에서는 수동으로 edmx에 개체를 추가하는 기본 사항 인 http://msdn.microsoft.com/en-us/library/bb399785.aspx에 대해 설명합니다. 그것은 편집 할 수있는 XML 파일이라는 것을 기억하십시오.

+0

랜스, 게시물에 대한 많은 감사합니다! 나는 문서를 확인하고 있었고 지금은 EF에 대한 자신감이 더 필요하다고 말하고있다. XML을 손으로 편집하려고한다. –

+0

손으로 수행 할 때 edmgen.exe 도구를보십시오. 나는 그것으로 조금만 작업했지만 XML 파일을 검증하여 두통을 덜어 줄 수 있습니다. – LanceSc

0

글쎄, 나는 일반적으로 모든 테이블에 기본 키를 넣어하는 것이 좋습니다로 추천 테이블의 행 (즉, 도메인 모델의 개체 또는 개체 인스턴스)을 고유하게 식별하고 구분할 수 있습니까?

SQL 전문가 한 명이 말했다 : 기본 키가 없으면 테이블이 아닙니다! 마크

+0

마크, 코멘트 주셔서 감사하지만 ** 노트 **에서 설명한 것처럼 데이터 소스를 제어 할 수있는 수준이 없지만 여전히 엔터티를 사용하여 조작하고 싶습니다. –

관련 문제