Бизнес-правило MDS для более чем одного доменного атрибута
Я застрял с этой проблемой на службе основных данных (MDS).
У меня есть объект, который имеет два домена на основе двух других объектов. Я создал первое бизнес-правило на основе первого домена, и оно отлично работает.
Но когда я пытаюсь создать второе бизнес-правило на основе второго домена, появляется ошибка:
200095 : Cannot specify more than one entity in MetadataGet
400003 : The attribute reference is not valid. The attribute was not found.
400003 : The attribute reference is not valid. The attribute was not found.
Очевидно, что атрибут действителен. Фактически, если я удаляю первые бизнес-правила, второе публикуется правильно.
Я думаю, что MDS блокирует вторые бизнес-правила, если вы пытаетесь применить ко второму доменному атрибуту.
1 ответ
Это также случилось с нами, и кажется, что эта ошибка возникает только при выполнении определенного набора действий:
- Сначала мы восстановили базу данных MDS 2012 на SQL Server 2017
- Мы обновили базу данных, используя инструмент управления MDS. Имейте в виду, что бизнес-правила с несколькими объектами теперь работают нормально - они не возвращают ошибок при сохранении, могут быть опубликованы и успешно оценены
- Затем мы поняли, что нам не хватает некоторых изменений кода, поэтому мы решили создать полный пакет модели, используя MDSModelDeploy.exe в нашей старой MDS 2012
- Мы развернули этот пакет, используя
MDSModelDeploy deployupdate
команда. После этого существующие правила для нескольких сущностей не публикуются, вы также не можете создавать новые правила на основе разных сущностей в пределах одной сущности. К сожалению, мы не нашли решения для этого, поскольку есть более простые способы обойти это.
В этот момент мы сделали шаг назад, восстановили и обновили старую базу данных еще раз, и оказалось, что правила сработали, поэтому это должен был быть пакет, который их нарушил. Я не знаю, какова была ваша ситуация, поскольку, когда мы создавали свежую модель в SQL 2017, все правила, основанные на нескольких сущностях, работали отлично, поэтому мне интересно узнать, какие шаги необходимо предпринять, чтобы воспроизвести ошибку в вашем случае.
Единственный возможный подход, который я могу придумать, чтобы исправить ситуацию в пункте 4, - это создать пакет обновления MDSModelDeploy из поврежденной модели, а другой - из новой, работоспособной модели, а затем сравнить XML-данные бизнеса, состоящего из нескольких объектов. правила структурированы. Мы не пробовали это, хотя, так как мы нашли обходной путь, описанный ранее.