DefiningQuery는 있지만 InsertFunction 요소는 없습니다…
이 일은 나를 미치게 만들고 오류는 나에게 무의미합니다.
EntitySet 'TableB'에 DefiningQuery가 있고 현재 조작을 지원할 요소가 요소에 없기 때문에 EntitySet 'TableB'을 업데이트 할 수 없습니다.
내 테이블은 다음과 같습니다.
TableA int idA (ID, 기본 키) ... TableB int idA (TableA.idA의 경우 FK) int val
TableB에는 SQL Server에 정의 된 기본 키가 없습니다. Entity Framework가 테이블과 연관을 가져오고 두 필드를 모두 키로 설정했습니다. 그러나 테이블에 삽입을 시도하면 해당 오류가 출력됩니다!
뭐가 문제 야??
편집 : Alex가 제안한 것처럼 해결책은 다음과 같습니다.
- edmx 파일을 마우스 오른쪽 단추로 클릭하고 연결 프로그램, XML 편집기를 선택하십시오.
- edmx : StorageModels 요소에서 엔티티를 찾으십시오.
- DefiningQuery를 완전히 제거하십시오.
- store : Schema = "dbo"의 이름을 Schema = "dbo"로 바꿉니다 (그렇지 않으면 코드에서 이름이 잘못되었다는 오류가 발생합니다)
- store : Name 특성을 제거하십시오.
두 열이 모두 키의 일부라는 것이 나에게 좋았으므로 키를 그대로 두었습니다.
기본 키가없는 테이블이 있으면 뷰로 처리됩니다.
그리고 뷰는 StorageModel \ EntitySet [n] \ DefiningQuery 요소의 EDMX 파일 (XML 편집기에서 열림)에 표시됩니다.
DefiningQuery가있는 경우 수정 기능을 추가하지 않으면 엔티티가 읽기 전용이됩니다. 삽입, 업데이트 및 삭제 각각에 대해 하나씩 세 가지 수정 기능 (일명 저장 프로 시저)이 필요합니다.
그러나 두 가지 옵션이 있습니다.
키 정의를 변경하십시오.
- 그리고 EF가 생각하는 것은보기라고 생각합니다.
- 또는 적절한 수정 기능을 추가하십시오
귀하의 경우 (1)을 권장합니다.
테이블에 기본 키를 추가하십시오. 그게 다야. 문제 해결됨.
ALTER TABLE <TABLE_NAME>
ADD CONSTRAINT <CONSTRAINT_NAME> PRIMARY KEY(<COLUMN_NAME>)
테이블에 기본 키가없고이 오류 메시지가 나타납니다. 내가 주목 한 것은 테이블에 키를 추가 한 후 디자이너를 사용하여 edmx에서 테이블을 지우고 edmx를 저장 한 다음 테이블을 다시 추가하여 테이블을 다시 추가해야했습니다. 키를 집어 올리지 못했습니다. 이미 뷰로 할당되었으므로 이것은 edmx를 수동으로 편집 할 필요가 없었습니다.
기본 키를 테이블에 추가하고 edmx 모델에서 모델을 삭제 한 다음 데이터베이스에서 업데이트를 선택하고 빌드하고 실행하십시오.
@Palantir. 두 테이블 모두 기본 키가 설정되어 있는지 확인하고 테이블에 여러 기본 키가 설정되어 있는지주의하십시오.
참고 URL : https://stackoverflow.com/questions/1589166/it-has-a-definingquery-but-no-insertfunction-element-err
'Programming' 카테고리의 다른 글
인공 신경망에 대한 입력을 정규화해야하는 이유는 무엇입니까? (0) | 2020.07.10 |
---|---|
세션 선호도와 고정 세션의 차이점은 무엇입니까? (0) | 2020.07.10 |
앰퍼샌드로 PHP 기능을 시작한다는 것은 무엇을 의미합니까? (0) | 2020.07.10 |
MyAssembly.XmlSerializers.dll은 (는) 무엇 이죠? (0) | 2020.07.10 |
10 억 숫자의 중앙값 계산 (0) | 2020.07.10 |