什么是sql server中c#float的等效数据类型

时间:2017-11-22 07:34:26

标签: c# sql sql-server entity-framework

我已经创建了类

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] 

并收到错误

  

' FontSize'属性' UserAppearanceSettings'无法设置为“System.Double”'值。您必须将此属性设置为类型为' System.Single'。

的非空值

我应该在sqlserver for float中使用什么数据类型

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:-1)

使用流畅的API来指示实体框架的行为与按惯例行为不同。在您重写DbContext.OnModelCreating。

时执行此操作

如果你想告诉实体框架你的DbSet类中的每个浮点数应该具有SQL数据类型Float(size,d),请使用ConventionPrimitivePropertyConfiguration

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

    base:OnModelCreating(modelBuilder);
}

如果您只想要一些float属性来使用float类型HasColumnType

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