在SQL Server中,C# float的等效数据类型是什么?

12 浏览
0 Comments

在SQL Server中,C# float的等效数据类型是什么?

这个问题已经有答案了:

EF Cannot convert double to single

C# Equivalent of SQL Server DataTypes

我已经创建了一个类

public class UserAppearanceSettings
{
    [Key]
    public long Id { get; set; }
    public string UserName { get; set; }
    public string SkinName { get; set; }
    public string FontName { get; set; }
    public float FontSize { get; set; }
}

我的sql表脚本

CREATE TABLE [dbo].[UserAppearanceSettings](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[UserName] [nvarchar](50) NULL,
[SkinName] [nvarchar](50) NULL,
[FontName] [nvarchar](50) NULL,
[FontSize] [float] NULL
) ON [PRIMARY] 

并且出现了错误

\'UserAppearanceSettings\'上的\'FontSize\'属性不能设置为\'System.Double\'值。您必须将此属性设置为类型为\'System.Single\'的非空值。

在SQL Server中应该使用什么数据类型来存储浮点数

admin 更改状态以发布 2023年5月23日
0
0 Comments

使用流畅的 API 指示 Entity Framework 以不同于约定的方式运行。在 DbContext.OnModelCreating 中覆盖此操作。

如果您希望告诉 Entity Framework,您 DbSet 类中的每个 float 应该具有 SQL 数据类型 Float(size, d),请使用 ConventionPrimitivePropertyConfiguration。

public override void OnModelCreating(DbModelBuilder modelBuilder)
{
    // Treat every float as SQL FloatType(53:
    modelBuilder.Properties
        .Configure(floatType => floatType.HasColumnType("float(53)");
    base:OnModelCreating(modelBuilder);
}

如果您只想让某些 float 属性具有 float 类型,请使用 HasColumnType。

modelBuilder.Entity()
    .Property(setting => setting.FontSize)
    .HasColumnType("float(53)");

0
0 Comments
0