使用 Microsoft Entity Framerk 在 MySQL 数据库中插入记录时出现错误。
米表是
CREATE TABLE IF NOT EXISTS `preventive` (
`IDPREVENTIVE` mediumint(9) NOT NULL AUTO_INCREMENT,
`DESCRIPTION` text,
`DATA_CRE` datetime DEFAULT NULL,
UNIQUE KEY `preventive_unique` (`CODICE`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=latin1;
我的模型构建器是
modelBuilder.Entity<Preventive>(entity =>
{
entity.HasKey(e => e.Idpreventive).HasName("PRIMARY");
entity.ToTable("preventive");
entity.HasIndex(e => e.Codice, "preventive_unique").IsUnique();
entity.Property(e => e.Idpreventive)
.HasColumnType("mediumint(9)")
.HasColumnName("IDPREVENTIVE");
entity.Property(e => e.Description)
.HasColumnType("text")
.HasColumnName("DESCRIPTION");
entity.Property(e => e.DataCre)
.HasColumnType("date")
.HasColumnName("DATA_CRE")
});
当我尝试插入记录时
context.Preventives.Add(edt_prev);
context.SaveChanges();
我收到错误,因为实体框架的日期格式错误。
SET @p0='mytext', @p1='06/02/2024'
INSERT INTO `preventive` (`DESCRIPTION`,`DATA_CRE`)
VALUES (@p0, @p1)
但是 MySQL 接受这种格式的日期 'YYYY-MM-DD',正确的指令是
SET @p0='mytext', @p1='2024-02-06'
INSERT INTO `preventive` (`DESCRIPTION`,`DATA_CRE`)
VALUES (@p0, @p1)
是否可以告诉实体框架如何格式化日期?例如
entity.Property(e => e.DataCre)
.HasColumnType("date")
.HasColumnName("DATA_CRE")
.HasConversion("YYYY-MM-DD")
我尝试使用转换器,但在插入记录时无法使用它
正如 ProgrommingLlama 在评论中所述。 日期不会以您提供的格式发送到数据库。
我假设您的
Preventive.DataCre
类型是 string
。
在这种情况下,您必须自己解析字符串并按照您的意愿进行转换。