Не мог присоединить отдельный объект: “Объект с тем же ключом уже существует в ObjectStateManager”

Некоторые приложения могут обмануть strace/ptrace для не выполнения, таким образом, единственная реальная опция, которую я имел, использует systemtap

Systemtap, может прервать набор системных вызовов в случае необходимости из-за его подстановочного соответствия. Systemtap не является C, но отдельным языком. В основном режиме systemtap должен препятствовать тому, чтобы Вы делали глупые вещи, но это также может работать в "опытном режиме", который отступает к разрешению разработчику использовать C, если это требуется.

Это не требует, чтобы Вы исправили свое ядро (Или по крайней мере не был должен), и как только модуль был скомпилирован, можно скопировать его с поля теста/разработки и вставить его (через insmod) в производственной системе.

я должен все же найти применение Linux, которое нашло способ работать вокруг/избегать того, чтобы быть пойманным systemtap.

20
задан Shimmy 17 August 2010 в 14:50
поделиться

3 ответа

Может ли ваша сущность «Контакт» иметь две дочерние сущности с одинаковым EntityKey ? Например, возможно ли получить от объекта Contact два объекта Address с одним и тем же ключом?

Если вы укажете MergeOptions.NoTracking , контекст с радостью вернет отдельный граф объектов, содержащий объекты с тот же ключ. Однако, когда вы присоединяете тот же граф объектов, будет выброшено System.InvalidOperationException .

Я бы посоветовал вам посмотреть на весь граф объектов, который вы присоединяете к контексту, и проверить, есть ли объекты с дублирующимися ключами в нем.

7
ответ дан 30 November 2019 в 01:20
поделиться

Я столкнулся с той же проблемой в моем приложении.

Я решил проблему с помощью метода ObjectStateManager TryGetObjectStateEntry

На самом деле свойство EntityState вводит разработчиков в заблуждение. Хотя отображается сообщение "Отсоединено", интересно, что вызывает ошибку.

4
ответ дан 30 November 2019 в 01:20
поделиться

Ответ (и я не упоминал, что это была проблема, поскольку я не знаю, что это так), что если вы устанавливаете свойство навигации для отслеживаемой сущности, новая сущность добавляется автоматически:

Dim s = context.States.FirstOrDefault()
Dim a As New Address
a.State = s

Dim state = a.EntityState '= Added

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

5
ответ дан 30 November 2019 в 01:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: