gpt4 book ai didi

c# - 使用 EF5 代码优先迁移执行 IDENTITY_INSERT

转载 作者:太空狗 更新时间:2023-10-29 19:50:19 24 4
gpt4 key购买 nike

我有一个 POCO,我正尝试通过代码优先迁移创建它,然后是种子数据。问题是我想在播种时将特定值插入标识列。

这是我的POCO

public class Result
{
public long ResultId { get; set; }
public long? TeamId { get; set; }

public Team Team { get; set; }
}

这是我在 Configuration.cs 的 Seed 方法中调用 AddOrUpdate

context.Results.AddOrUpdate
(
r => r.ResultId,
new Result { ResultId = 101, TeamId = null },
new Result { ResultId = 201, TeamId = null }
);

正如预期的那样,它不会插入 101 和 201 的值,而是插入 1 和 2。是否有任何数据属性我可以应用到模型来帮助解决这个问题?

最佳答案

如何通过属性/约定关闭身份

public class Result
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ResultId { get; set; }
public long? TeamId { get; set; }

public Team Team { get; set; }
}

这就是您通过 EntityTypeConfiguration 关闭 Identity 的方式

public class ResultMapper : EntityTypeConfiguration<Result>
{
public ResultMapper()
{
HasKey(x => x.ResultId);
Property(x => x.ResultId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}
}

或者您可以使用 OnModelCreating 重载

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Result>().Property(x => x.ResultId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}

关于c# - 使用 EF5 代码优先迁移执行 IDENTITY_INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15258571/

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