[asp.net] DefiningQuery가 있지만 InsertFunction 요소가 없습니다… 오류

이것은 나를 미치게 만들고 오류는 나에게 매우 의미가 없습니다.

EntitySet ‘TableB’에 DefiningQuery가 있고 현재 작업을 지원하는 요소가 요소에 없기 때문에 업데이트 할 수 없습니다.

내 테이블은 다음과 같이 배치됩니다.

TableA
int idA (ID, 기본 키)
...

TableB
int idA (TableA.idA의 경우 FK)
int val

TableB에는 SQL 서버에 정의 된 기본 키가 없습니다. Entity Framework는 테이블과 연결을 가져오고 두 필드를 키로 설정했습니다. 그러나 테이블에 삽입을 시도하면 해당 오류가 출력됩니다!

뭐가 문제 야??


편집 :
Alex가 제안한대로 해결책은 다음과 같습니다.

  1. edmx 파일을 마우스 오른쪽 버튼으로 클릭하고 다음으로 열기, XML 편집기를 선택하십시오.
  2. edmx : StorageModels 요소에서 엔티티를 찾습니다.
  3. DefiningQuery를 완전히 제거하십시오.
  4. store : Schema = “dbo”의 이름을 Schema = “dbo”로 변경합니다 (그렇지 않으면 코드에서 이름이 유효하지 않다는 오류가 생성됨).
  5. store : Name 속성 제거

두 열이 모두 키의 일부라는 것이 괜찮 았기 때문에 키를 그대로 두었습니다.



답변

테이블이 PrimaryKey없이 발견되면 View로 취급됩니다.

그리고보기는 StorageModel \ EntitySet [n] \ DefiningQuery 요소의 EDMX 파일 (보려면 XML 편집기에서 열림)에 표시됩니다.

DefiningQuery가있는 경우 수정 함수를 추가하지 않는 한 엔티티는 읽기 전용이됩니다. 삽입, 업데이트 및 삭제 각각에 대해 하나씩 3 개의 수정 기능 (일명 저장 프로 시저)이 필요합니다.

그러나 두 가지 옵션이 있습니다.

키 정의 변경 :

  1. 그리고 EF가보기라고 생각하는 것이 실제로 테이블이라고 확신시킵니다.
  2. 또는 적절한 수정 기능 추가

귀하의 경우에는 (1)을 추천합니다.


답변

테이블에 기본 키를 추가하기 만하면됩니다. 그게 다야. 문제 해결됨.

ALTER TABLE <TABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>)


답변

내 테이블에 기본 키가 없어서이 오류 메시지가 나타납니다. 내가 주목 한 한 가지는 테이블에 키를 추가 한 후 디자이너를 사용하여 edmx에서 테이블을 지우고 edmx를 저장 한 다음 다시 업데이트하여 테이블을 다시 추가해야한다는 것입니다. 키를 가져 오지 않았습니다. 이미보기로 할당 되었기 때문입니다. 이것은 edmx를 수동으로 편집 할 필요가 없었습니다.


답변

테이블에 기본 키를 추가하고 edmx 모델에서 모델을 삭제 한 다음 데이터베이스에서 업데이트를 선택하고 빌드하고 실행합니다.


답변

@Palantir. 두 테이블에 모두 기본 키가 설정되어 있는지 확인하고 테이블에 여러 기본 키가 설정되어 있는지 확인하십시오.


답변

  1. .EDMX 파일은 메모장이나 메모장 ++ 또는 원하는 텍스트 편집기에서 수동으로 열어야합니다.
  2. 1 단계에서 연 파일에서 edmx : StorageModels의 항목을 찾습니다.
  3. DefiningQuery 요소를 찾아이 태그를 완전히 제거하십시오.
  4. store : Schema = “dbo”to Schema = “dbo”를 찾습니다 (이 단계를 건너 뛰면 이름이 잘못되었다는 오류가 생성됨).
  5. 파일을 저장하고 닫습니다.

문제가 해결되기를 바랍니다.


답변