2009-02-09 3 views
0

C#을 사용하여 데이터 세트의 SQL 테이블에서 일부 데이터를 가져 오려고합니다. 나는 테이블의 NULL 필수 NOT, 복사에 다시 열을 끌어 있지 않다 나는 그러나, 모든 열을 몇 가지 특정 사람이 필요하지 않습니다이 경우 테이블에 다른 열을 반환하는 데이터 집합에서 쿼리를 실행하려면 어떻게해야합니까?

예외

"Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints." 
을 던지고있다

나는 unNullable 열을 내 테이블로 반환하여이 문제를 해결할 수 있지만 불필요한 데이터를 반환하지 않기를 바랍니다.

이 예외를 throw 내가 사용하고 쿼리

SELECT  DeviceSerialNumber, BuildID, LEMSCredentialsID, LEMSSoftwareID, OwnerID, RestagedDate 
FROM   tblDevice 
WHERE  (DeviceSerialNumber = @SerialNumber) 

이 필수 열 "tblLocationID"를 제외입니다. 실제로이 열은 데이터베이스를 전체적으로 고려할 때만 필수적으로 사용되며, 양식으로 사용하기위한 빌드 및 소프트웨어 세부 정보가 필요한 경우가 아닙니다.

다음과 같은 방식으로이 쿼리를 사용하려고합니다. 미리보기 데이터를 검색 할 때 내가 알

private DataTable dtDevice; 

dtDevice = taDevice.GetDataByDeviceSN_ForRestage(txtDeviceSerial.Text); 

은 Visual Studio에서 열을 포함하여 내 SQL에 지정되지 않은 열 그러나 데이터가 이러한 열을 채우지 않습니다를 tblLOcationID립니다.

어쨌든 열의 Null을 허용하지 않는 부분을 가져 오지 않고 임시 테이블에서이 데이터를 사용할 수 있습니까? 바람직하게는 선택되지 않은 컬럼들을 전혀 끌어 들이지 않는가? 메타 데이터는 새로운를 추가 할 수있는 클라이언트를 알려주기 때문에

CREATE TABLE [dbo].[tblDevice](
[DeviceSerialNumber] [nvarchar](50) NOT NULL, 
[Model] [nvarchar](50) NULL, 
[ManufactureDate] [smalldatetime] NULL, 
[CleanBootDate] [smalldatetime] NULL, 
[BuildID] [int] NULL, 
[Notes] [nvarchar](3000) NULL, 
[AuditID] [int] NULL, 
[LocationID] [int] NOT NULL, 
[SimID] [int] NULL, 
[LEMSCredentialsID] [int] NULL, 
[LEMSSoftwareID] [int] NULL, 
[OwnerID] [int] NULL, 
[RestagedDate] [smalldatetime] NULL, 
[Boxed] [bit] NULL, 
CONSTRAINT [PK_tblDevice_1] PRIMARY KEY CLUSTERED 
([DeviceSerialNumber] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] 

답변

1

taDvice 은 테이블 어댑터입니까? 형식화 된 데이터 집합으로 생성 되었습니까?

또한 (당신이 얻고 채우기를 생성 할 수 있습니다)은 "FillDataByDeviceSN"방법을 생성 할 수

다음 수 (의사 틱 코드) :

tblDeviceDataTable dtService = new tblDeviceDataTable(); 
dtService.tblLocationID.AllowDbNull = true; 
taDevice.FillDataByDeviceSN(dtService,txtDeviceSerial.Text); 
+0

그 일을합니다. 대단히 감사합니다. 그것은 나에게 완전히 새로운 계층의 confsion을 가져 왔지만 그것은 또 다른 질문을위한 것입니다 :-) 다시 한번 감사드립니다. –

0

열은 필수입니다 : 소스 테이블의 - (빼기 외부 키 정의) 완전성에 대해






, 여기에 정의의 행을 변경하거나 행을 변경하면이 열의 값을 제공해야합니다. 데이터를 변경하지 않고 양방향 매핑이 필요하지 않은 경우 DataReader와 같은 좀 더 가벼운 것이 더 적합 할 수 있습니다.

+0

DataReader, 나는 내일 그것에 대해 살펴볼 것입니다. Thankx Cade Roux –

0
여기

몇 가지 옵션이 있습니다 :

사용할 필드에 대해 "형식화되지 않은 데이터 세트"를 만듭니다.

또는

변경 "을 던져 예외"을 "빈"의 기본에서 입력 데이터 세트에서 NOT NULL 필드에 nullValue 속성입니다.

또는

패트릭 False로 EnforceConstraints 설정을위한 제안 무엇을보십시오.

관련 문제