gpt4 book ai didi

c# - 将 int Id 用于 EF6 中的 bigint 列

转载 作者:太空狗 更新时间:2023-10-29 22:10:31 26 4
gpt4 key购买 nike

我们正在使用 Entity Framework 6 在旧版 Sql Server 数据库之上构建数据层,该数据库具有 bigint 类型的 Id 列。我们希望对 Id 列类型使用 int 而不是 long,并且我们确信表的增长永远不会超过 int< 的大小限制.

但是,我们收到以下错误:

The specified cast from a materialized 'System.Int64' type to the 'System.Int32' type is not valid.

我们如何在不修改数据库列类型的情况下实现我们想要的?

最佳答案

您应该能够在您的 OnModelCreating 方法中为每个受影响的模型指定列的数据类型):

modelBuilder.Entity<Department>()   
.Property(p => p.Id)
.HasColumnType("bigint");

如果每个模型中的每个 Id 都映射到一个 bigint,那么您可以使用自定义约定:

modelBuilder.Properties<int>()
.Where(p => p.Name == "Id")
.Configure(c => c.HasColumnType("bigint"));

另一种技术是为所有具有 bigint Id 的模型使用抽象基类(此示例显示它使用数据注释而不是流畅的 API:

public abstract class BaseModel
{
[Column(TypeName="bigint")]
public int Id { get; set; }
}

引用资料:

Configuring the data type of a column

Custom conventions

关于c# - 将 int Id 用于 EF6 中的 bigint 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32266917/

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