Skip to content

Upgrade different custom version models to the latest custom version.

License

Notifications You must be signed in to change notification settings

davidyujia/ModelUpgrade

Repository files navigation

ModelUpgradeSolution

How to use

Upgrade your model to latest version.

// Create a model upgrade chain, this chain must from oldest version to latest version.
var v1Upgrade = new MyVersion1To2Upgrade();
var v2Upgrade = new MyVersion2To3Upgrade(v1Upgrade);

// Sample data.
var v1Model = new Version1
{
    Uid = "TestV1",
    Name = "Test1"
};

// Upgrade sample to latest version
var v3Model = v2Upgrade.Upgrade(v1Model);

Jump Upgrade your model.

// Sample data.
var v1Model = new Version1
{
    Uid = "TestV1",
    Name = "Test1"
};

var v2Model = new Version2
{
    Id = "TestV2",
    ProjectName = "Test2",
};

// Create a model upgrade chain, this chain must from oldest version to latest version.
var v1JumpToV4Upgrade = new MyVersion1To4Upgrade();

var v2Upgrade = new MyVersion2To3Upgrade();
var v3Upgrade = new MyVersion3To4Upgrade(v2Upgrade);

// Add your jump chain in here
var v4Upgrade = new MyVersion4To5Upgrade(v3Upgrade, v1JumpToV4Upgrade);

// Also can use this method to add chains
v4Upgrade.Add(v1JumpToV4Upgrade);

// v1 model jump upgrade to v5
var v1ToV5Model = v4Upgrade.Upgrade(v1Model);

// v2 model upgrade to v5
var v2ToV5Model = v4Upgrade.Upgrade(v2Model);

Before upgrade

Must create your upgrade chains and inheritance ModelUpgrade<TPreviousVersion, TTargetVersion> for ready.

class MyVersion1To2Upgrade : ModelUpgrade<Version1, Version2>
{
    protected override Version2 UpgradeFunc(Version1 model) => new Version2
    {
        Id = model.Uid,
        ProjectName = model.Name
    };
    
    public MyVersion1To2Upgrade() : base(null)
    {
    }
}

class MyVersion2To3Upgrade : ModelUpgrade<Version2, Version3>
{
    protected override Version3 UpgradeFunc(Version2 model) => new Version3
    {
        ProjectId = model.Id,
        ProjectName = model.ProjectName
    };

    public MyVersion2To3Upgrade(params ModelUpgradeChain<Version2>[] nextChains) : base(nextChains)
    {
    }
}

About

Upgrade different custom version models to the latest custom version.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages