programing

DefiningQuery(정의 쿼리)가 있지만 InsertFunction 요소는 없습니다...잘못한

elecom 2023. 5. 13. 08:49
반응형

DefiningQuery(정의 쿼리)가 있지만 InsertFunction 요소는 없습니다...잘못한

이 일은 나를 미치게 하고, 그 실수는 나에게 꽤 의미가 없습니다.

엔티티를 업데이트할 수 없습니다.DefiningQuery가 있고 요소에 현재 작업을 지원하는 요소가 없으므로 'TableB'를 설정합니다.

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

표 AintidA(ID, 기본 키)...
표 BintidA(표 A.idA의 경우 FK)삽입의

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

왜 그래요?


편집: Alex가 제안한 대로 솔루션은 다음과 같습니다.

  1. edmx 파일을 마우스 오른쪽 버튼으로 클릭하고 Open with, XML Editor를 선택합니다.
  2. edmx에서 엔티티를 찾습니다.스토리지 모델 요소
  3. 정의 쿼리를 완전히 제거합니다.
  4. 저장소 이름 변경:Schema="dbo"에서 Schema="dbo"로(코드가 이름이 잘못되었다는 오류를 생성함)
  5. 저장소 제거:이름 속성

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

기본 키가 없는 테이블은 보기로 처리됩니다.

또한 스토리지 모델\의 EDMX 파일(XML 편집기에서 열어 확인)에 보기가 표시됩니다.엔티티 집합 [n]\쿼리 요소를 정의합니다.

Defining Query(정의 쿼리)가 있는 경우 수정 기능을 추가하지 않으면 엔티티는 읽기 전용이 됩니다.삽입, 업데이트 및 삭제 각각에 대해 세 가지 수정 기능(저장 프로시저)이 필요합니다.

하지만 두 가지 옵션이 있습니다.

키 정의를 변경합니다.

  1. 그리고 EF가 생각하는 뷰가 정말 테이블이라고 설득합니다.
  2. 또는 적절한 수정 기능을 추가합니다.

당신의 경우 (1)을 추천합니다.

기본 키를 테이블에 추가합니다.바로 그겁니다.문제는 해결됐습니다.

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

테이블에 기본 키가 없어서 이 오류 메시지가 표시되었습니다.테이블에 키를 추가한 후 디자이너를 사용하여 edmx에서 테이블을 지우고 edmx를 저장한 다음 다시 업데이트하여 테이블을 다시 추가해야 했습니다.이미 뷰로 지정되어 있어서 키를 받지 못하고 있습니다.이렇게 하면 edmx를 수동으로 편집할 필요가 없습니다.

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

@팔란티르.두 테이블 모두 기본 키가 설정되어 있는지 확인하고 테이블에 여러 기본 키가 설정되어 있는지 확인합니다.

  1. 수동으로 열어야 합니다.EDMX 파일을 메모장, 메모장++ 또는 원하는 텍스트 편집기에 저장할 수 있습니다.
  2. edmx에서 항목을 찾습니다.1단계에서 파일의 스토리지 모델을 열었습니다.
  3. DefiningQuery 요소를 찾아 이 태그를 완전히 제거합니다.
  4. 스토어 찾기:Schema="dbo"에서 Schema="dbo"로(이 단계를 건너뛰면 이름이 잘못되었다는 오류가 발생합니다).
  5. 파일을 저장하고 닫습니다.

그것이 문제를 해결하기를 바랍니다.

언급URL : https://stackoverflow.com/questions/1589166/it-has-a-definingquery-but-no-insertfunction-element-err

반응형