Свойства навигации платформы Entity остаются нулевыми до тех пор, пока не будут сохранены в базе данных.C#

Место общения программистов C#
Ответить
Anonymous
 Свойства навигации платформы Entity остаются нулевыми до тех пор, пока не будут сохранены в базе данных.

Сообщение Anonymous »

Предположим, у меня есть базовый пример дерева данных для сохранения в базе данных:

Код: Выделить всё

class TreeModel {
int id;
virtual Collection ParentNodes;
}

class ParentNode {
int id;
virtual Collection TreeModel;
virtual Collection ChildNode;
}

class ChildNode {
int id;
virtual ParentNode Parent;
}
При создании этого дерева последовательность действий такая, распределенная по нескольким формам:

Код: Выделить всё

// Add Model button
tree = new TreeModel;
dbContext.Models.Add(tree); // changetracking in logs

// Add Node button:
tree.ParentNodes.Add(new ParentNode());
new ParentForm(tree.ParentNodes.First());

// In ParentForm:
ParentNode.Add(new ChildNode());
Это работает, как и ожидалось, но свойства навигации, которые я не вызывал Add(), остаются нулевыми. Он разрешил их только тогда, когда SaveChanges вызывается в контексте. Затем он также устанавливает идентификатор.

Я ожидаю, что, поскольку TreeModel отслеживается, он обнаружит изменения в свойствах навигации и разрешит их соответствующим образом.Это проблема, когда я хочу вызвать форму (ParentNode) и хочу отобразить некоторые свойства из TreeModel (например, имя) внутри этой формы или дублировать ChildNode из другого ParentNode во время создания мастеров.

Я не могу перемещаться по дереву, потому что TreeModel никогда не устанавливается в ParentNode.
Все на минном поле обхода null, что кажется совершенно неправильным.
Обходным решением может быть установка этих свойств вручную, но это похоже на противоречие тому, для чего предназначен EF.

Другой способ — установить передать dbContext повсюду в приложении и вызвать СохраняйтеContext на каждом шаге, но в документации это также не рекомендуется.
Значит, я, должно быть, делаю здесь что-то не так. Каков правильный рабочий процесс создания сущностей?

Подробнее здесь: https://stackoverflow.com/questions/792 ... o-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»