Некоторые приложения могут обмануть strace/ptrace для не выполнения, таким образом, единственная реальная опция, которую я имел, использует systemtap
Systemtap, может прервать набор системных вызовов в случае необходимости из-за его подстановочного соответствия. Systemtap не является C, но отдельным языком. В основном режиме systemtap должен препятствовать тому, чтобы Вы делали глупые вещи, но это также может работать в "опытном режиме", который отступает к разрешению разработчику использовать C, если это требуется.
Это не требует, чтобы Вы исправили свое ядро (Или по крайней мере не был должен), и как только модуль был скомпилирован, можно скопировать его с поля теста/разработки и вставить его (через insmod) в производственной системе.
я должен все же найти применение Linux, которое нашло способ работать вокруг/избегать того, чтобы быть пойманным systemtap.
Может ли ваша сущность «Контакт» иметь две дочерние сущности с одинаковым EntityKey ? Например, возможно ли получить от объекта Contact два объекта Address с одним и тем же ключом?
Если вы укажете MergeOptions.NoTracking , контекст с радостью вернет отдельный граф объектов, содержащий объекты с тот же ключ. Однако, когда вы присоединяете тот же граф объектов, будет выброшено System.InvalidOperationException .
Я бы посоветовал вам посмотреть на весь граф объектов, который вы присоединяете к контексту, и проверить, есть ли объекты с дублирующимися ключами в нем.
Я столкнулся с той же проблемой в моем приложении.
Я решил проблему с помощью метода ObjectStateManager TryGetObjectStateEntry
На самом деле свойство EntityState вводит разработчиков в заблуждение. Хотя отображается сообщение "Отсоединено", интересно, что вызывает ошибку.
Ответ (и я не упоминал, что это была проблема, поскольку я не знаю, что это так), что если вы устанавливаете свойство навигации для отслеживаемой сущности, новая сущность добавляется автоматически:
Dim s = context.States.FirstOrDefault()
Dim a As New Address
a.State = s
Dim state = a.EntityState '= Added
Поскольку я не знал, что я продолжал задаваться вопросом, как получилось, что сущность отслеживается. Я бы удалил весь вопрос, но поскольку есть попытка найти другой ответ, который может быть полезным, я оставлю его здесь, проголосуйте за закрытие, если вы считаете, что его следует закрыть.