postgresql - 23502:“id”列中的空值违反 postgreSQL 中的非空约束
问题描述
我用主键创建了一个表。
我尝试使用 entityframework6 插入新数据,但会出现 23502 错误。
但是我在插入之前将默认值添加到列中。
我不明白为什么会出现这个错误。
表 DDL:
CREATE TABLE ERRORLOG(
id numeric NOT NULL,
message varchar(50) NULL,
CONSTRAINT pterrorlog_pk PRIMARY KEY (id)
);
模型:
public partial class ERRORLOG
{
[Key]
[Column(Order = 0)]
public long ID { get; set; } = DateTimeOffset.Now.ToUnixTimeMilliseconds();
public string MESSAGE { get; set; }
}
功能:
using (DbContext Db as new DbContext)
using (TransactionScope transactionScope = new TransactionScope())
{
ERRORLOG iLog = new ERRORLOG();
iLog.MESSAGE = Message;
Db.ERRORLOG.Add(iLog);
Db.SaveChanges(); //Get 23502 error
}
这是插入脚本,好像没有插入id,这是为什么呢?
INSERT INTO "pterrorlog"("message") VALUES (@p_0) RETURNING "id"
编辑:
在模型上添加此脚本后,它现在可以正常工作了。
public partial class ERRORLOG
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ID { get; set; } = DateTimeOffset.Now.ToUnixTimeMilliseconds();
public string MESSAGE { get; set; }
}
解决方案
看起来实体框架会自动向列插入一个值。添加脚本以防止此问题后,它现在可以正常工作。
[DatabaseGenerated(DatabaseGeneratedOption.None)]
模型想要:
public partial class ERRORLOG
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ID { get; set; } = DateTimeOffset.Now.ToUnixTimeMilliseconds();
public string MESSAGE { get; set; }
}
推荐阅读
- javascript - commonjs和es6模块的去重
- python - 尝试更改熊猫列中的值时发出警报
- javascript - 关于如何将行分配给特定人员的 Excel 列表的 Java 脚本/Excel 公式
- django - 有没有办法让用户在 Django 网站上发帖之前先付款?
- javascript - 所有分片的 Discord.js 重新加载命令
- azure - 为“应使用即时网络访问控制保护虚拟机的管理端口”创建 Azure 自定义策略
- sikuli - SikuliX:我的脚本在检测图像时反应太慢,如何改进?
- codeigniter - CI4 在视图中访问 $data
- excel - 总物料清单数量计算
- git - 为什么 git rebase reword 不断发表新评论?