簡體   English   中英

在 Entity Framework Core 中為多個表設置 SET IDENTITY_INSERT

[英]Setting SET IDENTITY_INSERT for multiple tables in Entity Framework Core

我想將表IDENTITY_INSERT設置為ON 我可以一次吃一張桌子。 但是當我在做代碼優先的方法時,我怎么能做到不止一個。

我收到此錯誤:

System.Data.SqlClient.SqlException : IDENTITY_INSERT 對於表“Some Table”已經打開。 無法對表“ref.EmploymentType”執行 SET 操作

測試文件

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();
}

刪除這樣的行:

 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM