2011-09-09 35 views
1

我在SQL服務器中有兩個表Messages和第二個Message Bodies。有更改導入表中Lightswitch的關係多樣性

Message Bodies兩個(主鍵之間的MessagesMessage Bodies一個FK關係到列(Message ID)。對Message ID指定一個唯一索引,以保證沒有重複。

所有數據庫的工作目標是爲了確保一或零以一對一映射。

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

當我添加這個作爲數據源到的LightSwitch它增加了一個一到這些之間一對多的關係。

由於禁用乘法設置,我該如何改變它?

回答

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是否未公開?)。無論如何,如果你想給它一個鏡頭,看看你的項目的數據目錄。

+1

只是想添加,如果你列一個列可以爲空,而LS不能識別這個改變:「多重性是無效的......因爲所有的依賴角色的屬性都是可以爲空的,所以主體角色的多重性必須是' 0..1'「,你將在這種情況下從LSML中刪除Multiplicity線。 (值爲1,很多,或者根本不爲0..1) –

+1

@ChristopherGalpin此評論剛剛救了我的傍晚...... – mattanja