Open
Description
问题描述及重现代码:
低代码模式下,如果在数据库中删除了主键字段,同步时不会添加主键
var table = new TableDescriptor
{
Name = "User",
Columns =
{
new ColumnDescriptor{ Name = "Column1", DbType = "varchar", MapType = typeof(string), IsPrimary = true, StringLength = 255 },
new ColumnDescriptor{ Name = "Column2", DbType = "varchar", MapType = typeof(string), StringLength = 255 },
}
};
var context = new ZeroDbContext(fsql, [table]);
context.SyncStructure();
第一次运行以上代码同步后,Column1是主键,这是符合预期的。
然后在数据库中删除Column1字段,然后再次执行上述代码,可以看到Column1被创建了,但不是主键了。
期望:Column1依然是主键。
另外,如果字段为int类型,并且设置为自增则不会有这个问题,主键索引会被重建。但如果去掉自增也是同样的问题。
可能是同一原因的问题:
如果第一次将两个字段设置为主键,则在生成的数据表中看到是双主键,这是符合预期的。但如果第一次同步时只设置一个字段为主键,第二次同步时再加一个字段,则第二次加的这个主键字段就没有生效了。
数据库版本
MySQL 8.7
安装的Nuget包
.net framework/. net core? 及具体版本
.net core 8.0
Metadata
Metadata
Assignees
Labels
No labels