2011-09-09 2 views
1

SQL 서버에 두 개의 테이블이 있으며 하나는 Messages이고 다른 하나는 Message Bodies입니다. Message Bodies에 열 (Message ID)에 Messages에있는 두 개의 (기본 키 사이의 FK 관계가있다.가져온 테이블에 대해 Lightswitch에서 관계의 다양성을 변경하십시오.

Message Bodies 아무런 중복이 없도록하기 Message ID에 지정된 고유 인덱스를 가지고있다.

모든 데이터베이스 작업의 목표를 한 또는 제로 1에 매핑을 보장하는 것입니다. 나는 Lightswitch에 데이터 소스로이를 추가 할 때

  +-------------------------+   +------------------------------+ 
      | Messages    |   | Message Bodies    | 
      |-------------------------|   |------------------------------| 
      | PK      |+----+  | PK       | 
      | Message Header   |  +----+| Message ID     | 
      |       |   | Message Body     | 
      +-------------------------+   +------------------------------+ 

이이 사이에 많은 관계로 하나를 추가합니다.

다중 배제 설정을 사용 중지하면 어떻게 변경합니까?

답변

1

이 방법으로 당신의 SQL 데이터를 모델링하는 경우, LightSwitch는 1 0..1 관계 인식합니다 : 당신이 당신의 스키마를 변경할 수없는 경우

CREATE TABLE [Messages] 
(
    PK int IDENTITY(1,1) not null, 
    MessageHeader varchar (50) not null, 
    PRIMARY KEY (PK) 
) 
GO 

CREATE TABLE [MessageBodiesWithPK] 
( 
    PK int not null, 
    MessageBody varchar(50) null, 
    PRIMARY KEY (PK), 
    FOREIGN KEY (PK) REFERENCES [Messages] (PK) 
) 
GO 

것은, 당신이 LSML을 편집 손으로해야합니다을 파일. 이것은 지원되지 않지만 데이터 설계자가 내 의도를 정확하게 추측하지 못하는 영역을 수정하기 위해 특히 SQL 뷰에 암시 된 키를 수정하기 위해이 수정 사항을 사용했습니다. AssociationEnd 요소의 Multiplicity 특성을 "Many"에서 "One"로 설정해야합니다.

분명히 : LSML을 손으로 편집하는 것이 최후의 수단이라고 생각합니다. 실수를하면 전체 앱이 손상 될 수 있으므로 LSML이 문서화되지 않았 음을 언급 했으므로 작업을 먼저 확인해야합니다. 어쨌든, 만약 당신이 그것을 포기하고 싶다면, 당신의 프로젝트의 Data 디렉토리를보십시오.

+1

열을 Null 허용으로 변경하고 LS가 변경 내용을 인식하지 못하는 경우에만 추가하려고합니다. "다중도가 유효하지 않습니다 ... 종속 역할의 모든 속성이 Null을 허용하므로 주체 역할의 다중성이 ' 이 경우 LSML에서 Multiplicity 행을 삭제합니다. (값은 0..1에 대해 하나, 많거나 전혀없는 행입니다.) –

+1

@ChristopherGalpin이 코멘트는 내 저녁을 저장했습니다 ... – mattanja

관련 문제