如何解决EF Core为每个新迁移创建重复的更改
我通过模型类和枚举设计了数据库,我将枚举用作状态值:
public enum MyStatusEnum
{
Requested = 1,Validated = 2,Rejected = 3,Deleted = 4
}
在我的班级中,我的PrimaryKey引用了枚举
public class MyClientStatus
{
public MyStatusEnum MyClientStatusId { get; set; }
// other stuff here ...
}
然后我在枚举和要存储在数据库中的类型(字节)之间进行映射:
modelBuilder.Entity<MyClientStatus>(entity =>
{
//map enum to byte for the primary MyClientStatusId
entity.Property(e => e.MyClientStatusId ).HasConversion<byte>();
entity.Property(e => e.ConsumerStatusId).ValueGeneratedOnAdd();
// seed MyClientStatus values
entity.HasData(Enum.GetValues(typeof(MyStatusEnum)).Cast<MyStatusEnum>().Select(e => new MyClientStatus() { MyClientStatusId = e,Label = e.ToString() }));
});
毕竟,我从dotnet ef migrations add InitialCreate
开始新的迁移,并很好地创建了具有所有依赖项的新.cs文件,例如:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "MyClientStatus",columns: table => new
{
MyClientStatusId = table.Column<byte>(nullable: false)
},constraints: table =>
{
table.PrimaryKey("PK_ClientStatus",x => x.MyClientStatusId);
});
//other stuff here ...
}
我更新了数据库,直到现在一切都很好,我的问题是当我更新其他课程或开始新的迁移时它总是检测到新的根据我的枚举和班级而改变?:
public partial class SecondMigration: Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<byte>(
name: "MyClientStatusId",table: "MyClientStatus",nullable: false,oldClrType: typeof(byte),oldType: "tinyint")
.OldAnnotation("SqlServer:Identity","1,1");
}
}
我没有找到为什么它会为每个新迁移准确地检测到这些更改(当然,我无法应用它,因为在我的数据库中,ClientStatus表已经像预期的那样用MyClientStatusId(PK,tinyint,not null)
)
你能用你的想法挑战我吗?
谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。