Какова лучшая практика в отношении установки идентификаторов содержащихся сущностей в ядре платформы сущностей? - PullRequest
0 голосов
/ 01 мая 2019

Предполагая, что у меня есть следующие сущности, которые я храню в базе данных, используя ядро ​​платформы сущностей

public class Container{
  public int ContainerId {get; set;}
  public int ContainedId {get; set;}
  public Contained Contained {get; set;}
}

public class Contained {
  public int ContainedId {get; set;}
  public int ValueA {get; set;}
  public int ValueB {get; set;}
}

если в какой-то момент времени я решу сохранить класс Container, с известным классом Contained я должен вручную установить Id?

var containerToSave = new Container{
  Contained = contained;
  ContainedId = contained.ContainedId
}

или это плохая практика? Если я установлю его с идентификатором, который не совпадает с идентификатором в реальном классе, что он сохранит?

1 Ответ

0 голосов
/ 01 мая 2019

Что касается Entity Framework, вы можете указать внешний ключ или добавить связанный объект при сохранении основного.

Чтобы ответить на ваш вопрос ... Нет, это не плохая практика, и это также не имеет отношения к EF. Скорее, ваш Container соответствует Contained - это проблема, связанная с бизнесом, и там следует ее обработать и проверить. Роль EF в вашем случае заключается в сохранении данных любым выбранным вами методом.

Если вы отметите Contained EF, вы получите 2 варианта:

public virtual Contained Contained { get; set; }
  1. Добавить внешний ключ:

    var containerToSave = new Container 
    {
        ContainedId = contained.ContainedId
    }
    
  2. Добавить саму сущность:

    var containerToSave = new Container 
    {
        Contained = new Contained
        {
            ValueA = x;
            ValueB = y;
        }
    }
    

В вашем случае, если вы уже добавили Contained, вы можете перейти к первому, но не менее, любой из вышеперечисленных методов работает просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...