gpt4 book ai didi

ef-code-first - 如何暂时关闭 EF Code First 中的 IDENTITY 列?

转载 作者:行者123 更新时间:2023-12-04 18:50:16 26 4
gpt4 key购买 nike

我正在 EF Code First 中创建现有应用程序的重写,但我需要从现有应用程序的数据库中导入一些数据。这是我的实体类的定义:

public class Business : EntityBase
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int AccountNumber { get; set; }

现在,导入的记录需要保留其 AccountNumber旧系统的值(value)。但是,新值应该使用 IDENTITY DB 生成的值。

如何关闭 IDENTITY当我导入旧记录时,然后在应用程序的剩余生命周期内重新打开它?在导入记录之前执行此操作无效:
context.Database.ExecuteSqlCommand("set identity_insert Businesses on");

最佳答案

你不能。执行 set identity_insert命令会更改 SQL Server 的行为,但不会更改 Entity Framework 的行为。

您有三种导入记录的选择:

  • 使用原始 ADO.NET 命令(不是实体)或 ExecuteSqlCommand .
  • 使用不同的 DbContext ,其中您将 key 定义为非生成。
  • 使用更适合数据转换的不同技术,例如 SSIS
  • 关于ef-code-first - 如何暂时关闭 EF Code First 中的 IDENTITY 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7151710/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com