public async Task OnValueChanged_Ok()
    {
        var localizer = Context.Services.GetRequiredService <IStringLocalizer <Foo> >();
        var fooData   = GenerateDataTable(localizer);
        var context   = new DataTableDynamicContext(fooData);
        var item      = context.GetItems().First();

        item.SetValue(nameof(Foo.Name), "test-name");
        await context.SetValue(item);

        Assert.Equal("test-name", fooData.Rows[0].ItemArray[1]?.ToString());
        Assert.Equal("test-name", item.GetValue(nameof(Foo.Name)));

        // not exist
        item.DynamicObjectPrimaryKey = Guid.NewGuid();
        await context.SetValue(item);
    }