iT邦幫忙

2025 iThome 鐵人賽

DAY 29
0
自我挑戰組

打造自己的Medium系列 第 29

Day29 MongoDB Migration

  • 分享至 

  • xImage
  •  

之前提到要研究的,終於想起來補上

設定

  1. 安裝
    dotnet add package MongoDB.Extensions.Migration
  2. 修改User.cs Model,並加入版本號
public class User : IVersioned
{
    [BsonId]
    public ObjectId Id { get; set; }

    [BsonElement("username")]
    public string Username { get; set; } = null!;

    [JsonIgnore]
    public string Password { get; set; } = null!;

    [BsonElement("version")]
    public int Version { get; set; } = 2;
}
  1. 寫Migration,只是為了改名字?
public class ReviseUserNameMigration : IMigration
{
    public int Version => 2;


    public void Up(BsonDocument doc)
    {

        if (doc.Contains("account"))
        {
            doc["username"] = doc["account"];
            doc.Remove("account");
        }

        // Update Version
        doc["version"] = Version;
    }

    public void Down(BsonDocument doc)
    {
        if (doc.Contains("username"))
        {
            doc["account"] = doc["username"];
            doc.Remove("username");
        }

        doc["version"] = Version - 1;
    }
}
  1. Program.cs加入
app.UseMongoMigration(m => m
    .ForEntity<User>(e => e
        .AtVersion(2)
        .WithMigration(new ReviseUserNameMigration())));

參考資料

Writing Migrations for MongoDB in C#

作者的哈拉

總覺得這系列好難收尾阿,居然只剩一天了/images/emoticon/emoticon10.gif


上一篇
Day28 HotChocolate
系列文
打造自己的Medium29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言