Платформа Entify Вставляет, требуют Избранных полномочий

Мой голос был бы для свободного маленького брата BBEDIT TextWrangler.

10
задан Mark Seemann 10 November 2009 в 10:19
поделиться

1 ответ

По умолчанию, после добавления объекта в ObjectContext и вызова SaveChanges состояние этого объекта изменяется с добавленного на неизменное. и он по-прежнему отслеживается ObjectContext. Вот почему EF нужен этот идентификатор, чтобы он мог отслеживать изменения в нем.

Ключи сущностей и добавленные объекты:

1. Создается объект сущности. На данный момент все ключевые свойства имеют значения по умолчанию: null или 0.

2. Новый объект добавляется в ObjectContext либо путем вызова AddObject или один из объектов специфичные для набора методы добавления в контекст или вызывая Добавить в свойство навигации, которое возвращает EntityCollection.

На этом этапе Object Services генерирует временный ключ, который используется для хранения объектов в ObjectStateManager.

3.SaveChanges вызывается на ObjectContext.

Оператор INSERT генерируется Entity Services и выполняется на источник данных.

4.Если операция INSERT завершается успешно, значения, генерируемые сервером, записываются обратно к ObjectStateEntry.

5. ObjectStateEntry обновляет объект с сгенерированным сервером значение.

6.Когда вызывается AcceptChanges на ObjectStateEntry, постоянный EntityKey вычисляется с использованием нового значения, сгенерированные сервером.

Итак, насколько мне известно, невозможно переключить эту функцию из ObjectContext, и я не вижу никакого "хорошего" решения этой проблемы: один из способов избежать этого - это используйте свои собственные хранимые процедуры для вставки объекта (если можете) ( http://msdn.microsoft.com/en-us/library/bb399203.aspx ).

Кроме того, если нет сгенерированные сервером идентификаторы, я думаю, что запрос выбора не будет выполнен (опять же, если вы можете изменить базы данных и если вы хотите возиться с генерацией идентификаторов).

8
ответ дан 3 December 2019 в 23:50
поделиться
Другие вопросы по тегам:

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