在Lightswitch中为导入的表更改关系多样性

时间:2011-09-09 11:30:38

标签: visual-studio-lightswitch table-relationships

我在SQL server one Messages和第二个Message Bodies中有两个表。这两者之间存在FK关系(Messages上的主键与Message ID上的列Message Bodies)。

Message BodiesMessage ID上指定了唯一索引,以确保没有重复项。

所有数据库工作的目标是确保一对一或一对一的映射。

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

当我将此作为数据源添加到Lightswitch时,它会在这些之间添加一对多关系。

如果禁用了多重设置,我该如何更改?

1 个答案:

答案 0 :(得分: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目录。