LightSwitch - бизнес-правила - PullRequest
       1

LightSwitch - бизнес-правила

2 голосов
/ 03 августа 2011

У меня есть экран Master / Detail в LightSwitch. Я разрешаю пользователю удалять детали. Тем не менее, пользователь может удалить все, кроме одного. Другими словами, должен присутствовать только один элемент детализации.

Это выполнимо в выключателе света?

Привет

1 Ответ

3 голосов
/ 05 августа 2011

Вот как это сделать:

  1. Откройте объект, для которого вы хотите ограничить операцию удаления, в конструкторе LightSwitch
  2. Использование Код записи в раскрывающемся списке создайте событие Entity_Deleting
  3. . В событии удаления проверьте количество элементов сведений для главной сущности.Если значение равно 0, отмените изменения.

Вот как это сделать.В этом примере главной сущностью является AdAgreement, а сущностью сведений - Проблемы:

partial void Issues_Deleting(Issue entity)
{
    if (entity.Details.EntityState == EntityState.Deleted 
            && entity.AdAgreement.Issues.Count() == 0)
    {
        entity.Details.DiscardChanges();
    }
}

К сожалению, вы не можете выполнить эту проверку в событии Entity_CanDelete, что даст вам лучший пользовательский опыт, в моеммнение.Проблема в том, что CanDelete работает на уровне набора сущностей, и нет доступа к отдельной сущности, которая будет удалена.

...