在SQL Server中,C# float的等效数据类型是什么?
在SQL Server中,C# float的等效数据类型是什么?
这个问题已经有答案了:
我已经创建了一个类
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日
使用流畅的 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)");