2

매우 간단한 구조 - 외래 키가 1 대 다수 인 상위 자식입니다. 그때 삭제 enter image description hereEntity Framework에서 고유 인덱스를 추가하면 데이터 테이블이 작동하지 않습니다.

:이 오류를 발생

CreateIndex("dbo.Fixtures", new[] { "MarketId", "BookName", "CoupName" }, unique: true, name: "IX_UniqueFixture"); 

을 이후 나는 새 레코드를 입력 할 때 :

잘 작동했지만, 난 그래서 복합 고유 인덱스를 추가하여 고유성을하고 싶어 새로 추가 된 색인은 색인이 추가 된 후에 추가 된 레코드를 삭제하고 색인 추가 이전의 레코드를 표시하는 데 사용됩니다. 오류 메시지가 아래에 표시

enter image description here

레코드의 추가 이전에 존재했던 기록이다 : 나는이 같은 오류로 복귀 새 레코드로 데이터베이스를 업데이트 다시 시도하지만

, 앞서 언급 한 지수.

지금되도록 부모 룩업 테이블 ID 열 시드 후 - 그것은 는

가서 다시 한번 허용 (RESEED는 7 'ExchangeTypes')

USE [aspnet-Arb-20160906102730] 


DBCC CHECKIDENT 이동 작동 나 새 레코드

enter image description here

그래서에 추가하기 짧게는 레코드의 표시를 허용하기 위해 고유 한 복합 인덱스를 추가하여 데이터 테이블을 망쳐 놓은 것을 복구 할 수있었습니다.

그러나이 문제가 발생하는 이유는 내가 당황 스럽습니다. 그리고 저는 여전히 고유성을 강화하고 싶습니다. 아마 3 필드를 하나의 필드로 연결해보고 여러 필드가 아닌 단일 필드의 인덱스로 독창성을 강화하고 데이터 테이블 표시를 방해하지 않는지 확인할 수 있는지 확인합니다.

EDIT : 고유 한 필드의 색인으로 시도했지만 여전히 동일한 오류가 발생합니다. 재미있는 부모 조회 필드에 고유 인덱스를 적용해도 데이터 테이블은 작동하지 않지만 자식 테이블에서 동일하게 시도하는 것은 불가능합니다.

답변

0

EDIT 3 LIKE 내가이 그것을 그냥 자동 증가와 함께 자신을 돌볼 것이라고 생각이 같은 바보 예측할 수 알지도 못하는 해결 과정

해결할과 같은 금지 영향을 미칠 것이라고 상상하지 못할 수 있습니다 보인다 Datatables 행에 표시되지만, 레코드의 삭제 및 후속 추가로 한 번만 테스트했기 때문에 어떤 식 으로든 중단되지 않으면 초기 테스트에서 작동 할 수 있습니다. 누군가가 바닥에 닿아 더 나은 해결책을 제시하지 못한다면 손가락은 그것을 어쨌든 적절하게 해결할 수 있습니다.

삭제를 수행 할 때마다이 코드를 실행해야하는 것처럼 보입니다. 최대 ID 값을 PK의 현재 ID 값과 동일하게 재설정합니다.모든 삭제 후 ID 컬럼 아래와 같이

DECLARE @maxIdentityETValue INT 
DECLARE @maxIdentityFValue INT 

SET @maxIdentityETValue = (SELECT MAX(Id) FROM ExchangeTypes) 
DBCC CHECKIDENT('ExchangeTypes', RESEED, @maxIdentityETValue) 

SET @maxIdentityFValue = (SELECT MAX(Id) FROM Fixtures) 
DBCC CHECKIDENT('Fixtures', RESEED, @maxIdentityFValue) 

DBCC CHECKIDENT ('ExchangeTypes', NORESEED) 
DBCC CHECKIDENT ('Fixtures', NORESEED) 

EDIT 해결 NOT 2.

레코드를 삭제 한 다음 추가하려고 시도하면 레코드를 삭제하고 더 이상 추가 할 수 없게됩니다. :

ID를 생성 한 ID 값을 단계별로 보면 문제가 발생합니다. 삭제 후 해당 번호를 다시 시드하고 이후에 레코드를 추가하기 전에는 Datatables에 새 레코드가 표시됩니다.하지만 다시 시드하지 않으면 . 누군가가 나를 도와주세요

enter image description here


- 더 레코드를 삭제 및 이후에 위의 오류를 여전히 레코드를 표시하지 datatables를 방해하는 레코드를 추가하고 표시하기 전에 그들을

미치게! 0

편집 1 : 해결. 음.

인덱스를 추가 할 때 적어도 고유 한 인덱스가 있어야합니다. 데이터 테이블이 작동하기 위해 부모 ID와 자식 ID가 생성 된 ID 값을 다시 시드해야합니다. 레코드를 오류없이 표시합니다.

이유는 묻지 말고 그냥 작동합니다.

색인에 각각 고유 한 강제 제약 조건을 추가하는 것보다 부모와 자식을 각각 추가하기 때문에 데이터베이스에 새로운 레코드를 추가 할 수있게되었습니다. 이제는 데이터베이스에 새로운 레코드를 추가 할 수있게되었습니다.

관련 문제