使用 Microsoft Entity Framework 在 C# 中格式化特定的 MySQL DateTime YYYY-MM-DD

问题描述 投票:0回答:1

使用 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")

我尝试使用转换器,但在插入记录时无法使用它

c# mysql wpf entity-framework datetime
1个回答
1
投票

正如 ProgrommingLlama 在评论中所述。 日期不会以您提供的格式发送到数据库。

我假设您的

Preventive.DataCre
类型是
string
。 在这种情况下,您必须自己解析字符串并按照您的意愿进行转换。

© www.soinside.com 2019 - 2024. All rights reserved.