Создание зависимостей сущностей с использованием IDependableEntityDefinition в Cofoundry

#c# #dependencies #cofoundry

#c# #зависимости #сооснователь

Вопрос:

Есть ли какие-либо примеры использования IDependableEntityDefinition и как связать две пользовательские сущности, которые реализуют ICustomEntityDataModel ?

Спасибо, Джи

Ответ №1:

Вы, вероятно, использовали бы его только IDependableEntityDefinition в том случае, если бы связывались с пользовательской сущностью с сущностью, отличной от cofoundry, так что это немного сложный вариант использования и не документирован.

Если вы хотите связать пользовательские сущности, вам следует использовать аннотации пользовательских данных сущностей, такие как [CustomEntity] , [CustomEntityCollection] или [CustomEntityMultiTypeCollection] , в документах есть некоторые описания этих атрибутов. Эти атрибуты будут автоматически отслеживать зависимости для вас и предотвращать удаление зависимых сущностей, если связь не является необязательной.

В приведенном ниже примере BreedId зависимость является обязательной, а зависимость FurPatternId необязательной:

 public class CatDataModel : ICustomEntityDataModel
{
    public string Description { get; set; }

    [CustomEntity(BreedCustomEntityDefinition.DefinitionCode)]
    public int BreedId { get; set; }

    [CustomEntity(FurPatternCustomEntityDefinition.DefinitionCode)]
    public int? FurPatternId { get; set; }
}
 

Комментарии:

1. Спасибо за быстрый ответ, я действительно ценю это. Первоначальная причина вопроса заключалась в том, что у нас есть сценарий, в котором мы можем опубликовать пользовательскую сущность, которая имеет вложенную пользовательскую сущность, которая не опубликована. Есть ли способ предотвратить этот сценарий, чтобы вложенные сущности должны быть опубликованы для публикации родительского элемента? (прошу прощения, если задавать следующий вопрос — плохая практика, я новичок в stack overflow) Еще раз спасибо, Джи.

2. @Gareth нет возможности проверить, опубликованы ли они (отношения могут стать неопубликованными позже). Мы ожидаем, что об этом позаботятся при запросе связанных объектов, см. раздел Управление версиями объектов в документации.

3. Спасибо и сделаю. Хорошего декабря!