亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

EF Core 在每次遷移時更新種子數據而不進行更改

EF Core 在每次遷移時更新種子數據而不進行更改

C#
慕容森 2022-10-23 16:50:40
所以我用這樣的用戶和角色播種我的數據庫。public static void SeedUsers(this ModelBuilder modelBuilder)    {        var roles = new[]        {            new Role            {                Id = new Guid("5127599a-e956-4f5e-9385-1b8c6a74e4f1"),                RoleName = "Customer"            },            new Role            {                Id = new Guid("8634c476-20fa-4391-b8f7-8713abf61af0"),                RoleName = "Admin"            }        };        // customer password        byte[] customerPasswordHash = null;        byte[] customerPasswordSalt = null;        HashPassword("asd123", out customerPasswordHash, out customerPasswordSalt);        // admin password        byte[] adminPasswordHash = null;        byte[] adminPasswordSalt = null;        HashPassword("asd123", out adminPasswordHash, out adminPasswordSalt);        var users = new[]        {            new Users()            {                Id = new Guid("3b86f5a2-1978-46e3-a0b6-edbb6b558efc"),                FirstName = "John",                LastName = "Doe",                DepositedCash = 10000,                Email = "[email protected]",                RoleId = roles[0].Id,                PasswordHash = customerPasswordHash,                PasswordSalt = customerPasswordSalt            },            new Users()            {                Id = new Guid("c643b944-53d9-4a0c-9922-3486558b9129"),                FirstName = "Admin",                LastName = "Admin",                DepositedCash = 10000,                Email = "[email protected]",                RoleId = roles[1].Id,                PasswordHash = adminPasswordHash,                PasswordSalt = adminPasswordSalt            }        };        modelBuilder.Entity<Role>()            .HasData(roles);        modelBuilder.Entity<Users>()            .HasData(users);    }我正在創建遷移并更新數據庫。到目前為止,一切都很好。之后,當我創建另一個測試遷移時,不更改任何內容,它會創建一個具有相同數據的 UpdateData 方法。一切Up和Down方法都是一樣的。為什么它在沒有任何變化的情況下更新用戶?我錯過了什么?
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

您必須使用原始值播種以避免這種情況:


var users = new[]

        {

            new Users()

            {

                Id = new Guid("3b86f5a2-1978-46e3-a0b6-edbb6b558efc"),

                FirstName = "John",

                LastName = "Doe",

                DepositedCash = 10000,

                Email = "[email protected]",

                RoleId = roles[0].Id,

                PasswordHash = new byte[] { 211, 141, 232, 166, 77, 237, 128, 211, 121, 45, 47, 68, 211, 202, 162, 3, 39, 214, 212, 153, 4, 199, 223, 213, 43, 233, 224, 21, 107, 10, 62, 220, 105, 27, 254, 137, 16, 208, 56, 42, 254, 211, 154, 27, 60, 135, 197, 224, 148, 99, 232, 246, 220, 121, 113, 103, 42, 117, 172, 240, 134, 14, 188, 25 },

                PasswordSalt = new byte[] { 112, 114, 101, 100, 101, 102, 105, 110, 101, 100, 32, 107, 101, 121 }

            },

            new Users()

            {

                Id = new Guid("c643b944-53d9-4a0c-9922-3486558b9129"),

                FirstName = "Admin",

                LastName = "Admin",

                DepositedCash = 10000,

                Email = "[email protected]",

                RoleId = roles[1].Id,

                PasswordHash = new byte[] { 211, 141, 232, 166, 77, 237, 128, 211, 121, 45, 47, 68, 211, 202, 162, 3, 39, 214, 212, 153, 4, 199, 223, 213, 43, 233, 224, 21, 107, 10, 62, 220, 105, 27, 254, 137, 16, 208, 56, 42, 254, 211, 154, 27, 60, 135, 197, 224, 148, 99, 232, 246, 220, 121, 113, 103, 42, 117, 172, 240, 134, 14, 188, 25 },

                PasswordSalt = new byte[] { 112, 114, 101, 100, 101, 102, 105, 110, 101, 100, 32, 107, 101, 121 }

            }

        };

這樣,EF Core 將生成一個遷移,知道這是一個固定值,并且不會在每次遷移中更新它。使用方法(此處為 HashPassword)可防止 EF Core 將其視為已修復。


查看完整回答
反對 回復 2022-10-23
  • 1 回答
  • 0 關注
  • 132 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號