【问题标题】:Inserting 0 (zero) becomes null in Database在数据库中插入 0(零)变为空
【发布时间】:2013-09-02 09:21:57
【问题描述】:

我正在使用实体框架将一些数据插入我的数据库(sql server 2012)。 将 0 值插入到浮点字段后,它在数据库中显示为 null。

        using (var db = new myDB()) {
            Part_Properties pp = new Part_Properties {
                part_id = 7007,
                properties_id = 31,
                value_num = 0
            };
            db.Part_Properties.AddObject(pp);
            db.SaveChanges();
        }

根据分析器,正在发送:

exec sp_executesql N'insert [dbo].[Part_Properties]([part_id], [properties_id], [value_num], [value_char], [info])
values (@0, @1, @2, null, null)
',N'@0 int,@1 int,@2 float',@0=7007,@1=31,@2=0

DB 中的结果是这样的: part_id = 7007,properties_id = 31,value_num = null

但我需要这个值为 0。

有什么想法吗?

【问题讨论】:

  • 如果使用SQL查询插入数据,是否也会出现这种情况?
  • 这看起来很奇怪。也许您的桌面上有某种触发器?
  • 感谢@DanielHilgarth 的提示!如果有一个空字符串,我有一个触发器将我的字段设置为 null。 value_char = NULLIF(value_char, ''), value_num = NULLIF(value_num, ''), .... 似乎 NULLIF(..,'') 在出现 0 时触发。但当然我的 value_num 不需要它字段。
  • CAST('' AS INT) 返回0 这就是发生这种情况的原因。

标签: sql entity-framework-4 sql-server-2012


【解决方案1】:

我可能是错的,但因此这不应该发生。您可以通过定义 null 并将其转换为“0”来反之亦然。

请检查您的陈述是否有一些规则。

【讨论】:

    猜你喜欢
    • 2019-02-13
    • 2013-04-17
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多