Изменение кратности отношений в Lightswitch для импортированных таблиц - PullRequest
1 голос
/ 09 сентября 2011

У меня есть две таблицы на сервере SQL: одна Messages и вторая Message Bodies. Между ними существует отношение FK (первичный ключ на Messages к столбцу (Message ID) на Message Bodies.

Message Bodies имеет уникальный индекс, указанный в Message ID, чтобы не было дубликатов.

Цель всей этой работы с базой данных состоит в том, чтобы обеспечить сопоставление один или ноль к одному.

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

Когда я добавляю это как источник данных в Lightswitch, это добавляет отношение между ними.

Как мне изменить это, так как настройки умножения отключены?

1 Ответ

1 голос
/ 12 сентября 2011

Если вы смоделируете данные 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. Вы должны искать атрибут Multiplicity для элемента AssociationEnd - установите его с «Many» на «One».

Чтобы быть ясным: я бы рассмотрел ручное редактирование LSML в крайнем случае. Обязательно проверьте свою работу, прежде чем сделать это, потому что все приложение может быть повреждено, если вы допустите ошибку (я упоминал, что LSML недокументирован?). В любом случае, если вы хотите попробовать, загляните в каталог данных вашего проекта.

...