Я использую DBContext и имею два класса, свойства которых все виртуальны. Я могу видеть в отладчике, что я получаю прокси-объект, когда я запрашиваю контекст. Однако, когда я пытаюсь добавить к нему, свойство collection все еще имеет значение null. Я думал, что прокси-сервер обеспечит инициализацию коллекции.
Поскольку мой объект Poco можно использовать вне контекста данных, я добавил проверку на то, что коллекция имеет значение null в конструкторе и при необходимости создаст ее:
public class DanceStyle
{
public DanceStyle()
{
if (DanceEvents == null)
{
DanceEvents = new Collection<DanceEvent>();
}
}
...
public virtual ICollection<DanceEvent> DanceEvents { get; set; }
}
Это работает вне контекста данных, но если я извлекаю объект с помощью запроса, хотя тест является истинным, когда я пытаюсь его установить, я получаю следующее исключение: "Свойство" DanceEvents "в типе" DanceStyle_B6089AE40D178593955F1328A70EAA3D8F0F01DDE9F9FBD615F60A34F9178B94 "не может быть set, потому что коллекция уже установлена в EntityCollection. '
Я вижу, что это null, и я не могу добавить к нему, но я также не могу установить его в коллекцию, потому что прокси говорит, что он уже установлен. Поэтому я не могу его использовать. Я в замешательстве.
Вот класс DanceEvent:
public class DanceEvent
{
public DanceEvent()
{
if (DanceStyles == null)
{
DanceStyles = new Collection<DanceStyle>();
}
}
...
public virtual ICollection<DanceStyle> DanceStyles { get; set; }
}
Я опустил другие свойства типа значения из приведенного выше кода. У меня нет других сопоставлений для этих классов в классе контекста.