Я пишу приложение, которое экспортирует данные и сериализует их в файл для архивирования старых данных.Entity Framework и Identity Insert
Бывают случаи, когда по какой-либо причине необходимо повторно импортировать данные. Это вызвало у меня проблему из-за столбца идентификации.
Чтобы обойти это, я выполняю работу внутри области транзакции. Установка идентификатора Вставка Вкл. Для этой таблицы, а затем обновление моей транзакции, например.
using (TR.TransactionScope scope = new TR.TransactionScope(TR.TransactionScopeOption.RequiresNew))
{
// allow transaction nbr to be inserted instead of auto generated
int i = context.ExecuteStoreCommand("SET IDENTITY_INSERT dbo.Transactions ON");
try
{
// check if it already exists before restoring
var matches = context.Transactions.Where(tr => tr.transaction_nbr == t.transaction_nbr);
if (matches.Count() == 0)
{
Transaction original = t;
context.Transactions.AddObject(original);
context.SaveChanges();
restoreCount++;
Но я получаю исключение, говоря:
Явное должно быть указано значение для столбца идентификаторов в таблице либо при IDENTITY_INSERT> установлен в положение ON или когда пользователь репликации вставив в NOT FOR REPLICATION identity> column.
Я предполагаю, что структура сущности пытается сделать какую-либо вставку блока без указания столбцов. Есть ли все равно сделать это в инфраструктуре сущности.
Объект большой и имеет ряд связанных объектов, которые также десериализуются и нуждаются в вставке, поэтому я хочу, чтобы инфраструктура сущности делала это, если это было возможно, поскольку это сэкономит мне много дополнительной работы.
Любая помощь приветствуется.
Я не знаю, что я сделал, но он, по-видимому, исправился. – PaulMcCaffery
Либо я каким-то образом изменил модель, чтобы ее можно было, или, возможно, были некоторые проблемы, связанные с определением области охвата, что означало, что он не мог повторно импортировать из-за некоторого похмелья из предыдущего экспорта. – PaulMcCaffery
Nah, обратно. Что, черт возьми, я делаю? – PaulMcCaffery