Установка SET IDENTITY_INSERT для нескольких таблиц в Entity Framework Core - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу установить таблицы IDENTITY_INSERT на ON.Я могу за один стол за один раз.Но как я могу добиться более чем одного, поскольку я делаю код-первый подход.

Я получаю эту ошибку:

System.Data.SqlClient.SqlException: IDENTITY_INSERT isуже включен для таблицы «Некоторые таблицы».Невозможно выполнить операцию SET для таблицы 'ref.EmploymentType'

Test.cs

using (var transaction = _referenceDataDbContext.Database.BeginTransaction())
{
    _referenceDataDbContext.EmploymentType.AddRangeAsync(
                new EmploymentTypeEntity
                {
                    EmploymentTypeID = 1,
                    EmploymentType = "EmploymentType1 ",
                    CategoryTypeID = 27,
                    SiteAddress = null,
                    CreatedBy = "UnitTest",
                    CreatedOn = DateTime.Now,
                    ModifiedBy = "UnitTest",
                    ModifiedOn = DateTime.Now,
                    RowVersion = new RowVersion(1),
                    EmploymentTypeGroups = new[]
                    {
                    new EmploymentTypeGroupEntity
                    {
                        EmploymentTypeGroupID = 11, GroupName = "GroupName", IsActive = true
                    }
                    }
                }
                }
            );

    _referenceDataDbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [ref].[EmploymentTypeGroup] ON");
    _referenceDataDbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [ref].[EmploymentType] ON");

    _referenceDataDbContext.SaveChanges();
}

1 Ответ

0 голосов
/ 27 сентября 2018

Удалите строки, подобные этой:

 EmploymentTypeGroups = new[]
 {
     new EmploymentTypeGroupEntity
     {
         EmploymentTypeGroupID = 71, GroupName="Some Data", IsActive = true
     }
 }

и переместите _referenceDataDbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [ref].[EmploymentType] ON"); выше линии _referenceDataDbContext.EmploymentType.AddRangeAsync(.

, затем выключите IDENTITY_INSERT.

ЗатемПовторите все это для вставки записей вашей группы.

Таким образом, вам нужно только IDENTITY_INSERT ON для одной таблицы за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...