Coldairarrow / EFCore.Sharding

Database Sharding For EFCore
Apache License 2.0
694 stars 143 forks source link

ef core CodeFirst迁移的bug? #82

Open lable opened 3 years ago

lable commented 3 years ago

按日期分表,postgresql数据库环境下测试: model定义:

    [Table("ParkCash")]
    //[Table("parkcash")]
    public class ParkCash
    {
        [Key]
        [Column("id")]
        public long Id { get; set; }

        [Column("body")]
        public JsonDocument Body { get; set; }

        [Column("created_on")]
        public DateTime CreatedOn { get; set; } = DateTime.Now.ToLocalTime();

        //public int? Test { get; set; }
    }

一、如果表名使用驼峰命名(区分大小写),使用ef工具迁移能生成正确的表;启动程序使用EFCoreSharding自动维护表,生成的sql出现重复时间字段: ef工具执行迁移命令:

dotnet ef  database update

生成的sql里表名出现日期多次出现的情况:

CREATE TABLE "ParkCash_202102251710_202102251712" (
    id bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    body jsonb NULL,
    created_on timestamp without time zone NOT NULL,
    CONSTRAINT "PK_ParkCash_202102251710_202102251712" PRIMARY KEY (id)
);

二、如果表名使用全小写,不管是否使用ef工具迁移或者EFCoreSharding自动维护表,表名均有重复的时间问题:

[Table("parkcash")]

微信截图_20210225172515