【问题标题】:why session id is gendered as '00000000-0000-0000-0000-000000000000'?为什么会话 ID 的性别为“00000000-0000-0000-0000-000000000000”?
【发布时间】:2015-12-30 02:06:59
【问题描述】:

在我的db 表中,我有一个sessIdsessIduniqueidentifier 使用函数newid() 设置。但是当我插入一条记录时,sessId 生成为00000000-0000-0000-0000-000000000000

我认为这是一个系统错误,所以我运行了select newid(),它生成了一个新的id。但是为什么列会插入那些 zeros

【问题讨论】:

  • 如何插入行?例如,如果您使用实体框架,则必须设置 Guid 或使其可为空。 Guid 的默认值是全零,所以当它到达数据库时它有一个值并且不使用 sql 默认值。
  • @Crowcoder 我使用 EF saveChanges()
  • 对,所以你必须给这个字段一个值或者让它可以为空:Guid?
  • @Crowcoder 我正在检查代码以检查是否插入了 brb
  • 自从引入代码优先以来,我没有首先使用 EF 数据库,但我认为您可以在设计器中以某种方式修改类。但是你可以给会话 id 一个 Guid.NewGuid() 而不是试图让数据库来做。

标签: sql-server tsql sql-server-2008-r2 entity-framework-5


【解决方案1】:

发生的情况是您的 SessId 字段是一个 Guid,它是一种值类型,因此必须具有默认值,并且该值全为零。因此,当保存到数据库时,字段上有一个值(全为零)并且不会触发数据库默认值。 您可以在使用Guid.NewGuid() 调用SaveChanges() 之前给SessId 一个值,并且不要依赖数据库来执行此操作。 或者,如果您能找到在实体上执行此操作的方法,请将该字段设置为可为空的 Guid,以便它以 null 的形式到达数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-07
    • 2021-07-29
    • 1970-01-01
    • 2011-10-23
    相关资源
    最近更新 更多