IDENTITY_INSERT ON не учитывается для метода Entity Framework DBSet.Add - PullRequest
3 голосов
/ 15 февраля 2011
context.Database.SqlCommand("SET IDENTITY_INSERT [Songs] ON;");

как раз перед тем, как я делаю метод Add (метод Add из DbSet).

В моих данных все еще используется значение идентификатора вместо идентификатора, который я предоставляю.

Я хочу это только временно (для переноса данных), и тогда в будущем оно должно оставаться автоматически сгенерированным.

Я использую SQL CE 4 для своей базы данных.

Ответы [ 2 ]

4 голосов
/ 15 февраля 2011

Это может быть проблемой.DbContext обрабатывает само соединение БД.Это работает, только если вставки выполняются в том же соединении, что и включение идентификационной вставки.Я думаю, что это освобождает соединение после этой команды.Вы можете попробовать использовать другой конструктор DbContext и передать свой собственный открытый DbConnection экземпляр и самостоятельно обработать его закрытие.

3 голосов
/ 15 февраля 2011

EF не может догадаться, что вы выполнили команду IDENTITY_SET и соответственно изменили ее внутреннюю логику.

Если вам нужно вставить определенные значения Id, используйте SqlCommand и для вставок.

...