Мой голос был бы для свободного маленького брата BBEDIT TextWrangler.
По умолчанию, после добавления объекта в 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 ).
Кроме того, если нет сгенерированные сервером идентификаторы, я думаю, что запрос выбора не будет выполнен (опять же, если вы можете изменить базы данных и если вы хотите возиться с генерацией идентификаторов).