Выключатель света, уникальный для объекта

В моем проекте Lightswitch у меня есть таблица «Люди» с отношением «1 ко многим» к таблице «Электронные письма». Это очень похоже на то, что сделала Бет Масси в своем пошаговом руководстве по LS на http://blogs.msdn.com/b/bethmassi/archive/2013/10/23/beginning-lightswitch-in-vs-2013.-part-2-feel-the-love-defining-data-relationships.aspx. Каждый адрес электронной почты имеет тип электронной почты (т. е. рабочий, личный, другой). Как ограничить каждого пользователя только одним электронным письмом для каждого типа электронной почты?

Бет использует список выбора. Я обычно всегда создаю связь с другой таблицей, чтобы все это было видно из SQL. В любом случае пользователь может добавить несколько «рабочих» писем. Если вы установите для параметра EmailType значение Уникальный, это будет применяться повсеместно, и теперь у вас может быть только одна система рабочей электронной почты в масштабе всей системы, а не одна рабочая электронная почта на человека.

Я столкнулся с той же проблемой с учетными записями и телефонами, где каждая учетная запись должна иметь только один основной или один тип телефона факса.

Спасибо,

Джон


person John Granade    schedule 20.10.2014    source источник


Ответы (2)


Вы можете добавить адрес электронной почты и адрес электронной почты в уникальный индекс таблицы. Это гарантирует, что у каждого пользователя будет уникальная комбинация emailType/email. Сделать это. Откройте объект и для каждого поля, которое вы хотите добавить в уникальный индекс, установите флажок «Включить в уникальный индекс».

person Michael Senanayake    schedule 20.10.2014
comment
Спасибо. Как вы упомянули, ключ был в том, чтобы сделать уникальными как EmailType для электронной почты, так и учетную запись для электронной почты. Я просто добавил один, который сделал его уникальным во всем. - person John Granade; 25.10.2014

Другим вариантом может быть добавление ограничения CHECK к соответствующим таблицам, которое делает запись недействительной, если количество EmailType, AccountType и т. д. Entity Framework будет возвращать ошибки Check Constraint обратно в приложение, если вам нужна такая логика проверки.

person Ozziemedes    schedule 21.10.2014