public async Task UpdatePartColumns()
        {
            using (var conn = CreateConnection())
            {
                // 如果实体的 Schema 没有配置表名,则使用类名
                await conn.ExecuteAsync(
                    $"drop table if exists {Escape}test{Escape}.{Escape}updatepartcolumns{Escape};");

                using (var builder = GetLocalSpiderHostBuilder())
                {
                    var provider = builder.Build();
                    var services = provider.CreateScopeServiceProvider();
                    var storage  = CreateStorage(StorageType.InsertIgnoreDuplicate);
                    var dfc      = new DataFlowContext(null, services);
                    var typeName = typeof(CreateTableEntity6).FullName;
                    var entity   = new CreateTableEntity6();
                    dfc.Add(typeName, entity.GetTableMetadata());
                    var items = new ParseResult <CreateTableEntity6> {
                        entity
                    };
                    dfc.AddParseData(typeName, items);
                    await storage.HandleAsync(dfc);

                    var dfc2 = new DataFlowContext(null, services);
                    dfc2.Add(typeName, entity.GetTableMetadata());
                    var now = DateTime.Now;
                    dfc2.AddParseData(typeName,
                                      new ParseResult <CreateTableEntity6>
                    {
                        new CreateTableEntity6
                        {
                            Str1           = "TTT",
                            DateTime       = now,
                            DateTimeOffset = now,
                            Double         = 888,
                            Float          = 999F,
                            Required       = 888
                        }
                    });
                    var storage2 = CreateStorage(StorageType.Update);
                    await storage2.HandleAsync(dfc2);

                    var list = (await conn.QueryAsync <CreateTableEntity6>(
                                    $"SELECT * FROM {Escape}test{Escape}.{Escape}updatepartcolumns{Escape}"))
                               .ToList();
                    Assert.Single(list);
                    entity = list.First();
                    Assert.Equal("TTT", entity.Str1);
                    Assert.Equal("yyy", entity.Str2);
                    Assert.Equal(655, entity.Required);
                    Assert.Equal(0, entity.Decimal);
                    Assert.Equal(600, entity.Long);
                    Assert.Equal(888, entity.Double);
                    Assert.Equal(200.0F, entity.Float);

                    await conn.ExecuteAsync(
                        $"drop table if exists {Escape}test{Escape}.{Escape}updatepartcolumns{Escape};");
                }
            }
        }
        public async Task UpdatePartColumns()
        {
            using (var conn = CreateConnection())
            {
                // 如果实体的 Schema 没有配置表名,则使用类名
                await conn.ExecuteAsync(
                    $"drop table if exists {Escape}test{Escape}.{Escape}updatepartcolumns{Escape};");

                {
                    var storage = CreateStorage(StorageMode.InsertIgnoreDuplicate);
                    var context = new DataContext(null, new SpiderOptions(),
                                                  new Request(), new Response());
                    var typeName = typeof(CreateTableEntity6);
                    var entity   = new CreateTableEntity6();

                    var items = new List <CreateTableEntity6> {
                        entity
                    };
                    context.AddData(typeName, items);
                    await storage.HandleAsync(context);

                    var dfc2 = new DataContext(null, new SpiderOptions(),
                                               new Request(), new Response());
                    var now = DateTime.Now;
                    dfc2.AddData(typeName,
                                 new List <CreateTableEntity6>
                    {
                        new CreateTableEntity6
                        {
                            Str1           = "TTT",
                            DateTime       = now,
                            DateTimeOffset = now,
                            Double         = 888,
                            Float          = 999F,
                            Required       = 888
                        }
                    });
                    var storage2 = CreateStorage(StorageMode.Update);
                    await storage2.HandleAsync(dfc2);

                    var list = (await conn.QueryAsync <CreateTableEntity6>(
                                    $"SELECT * FROM {Escape}test{Escape}.{Escape}updatepartcolumns{Escape}"))
                               .ToList();
                    Assert.Single(list);
                    entity = list.First();
                    Assert.Equal("TTT", entity.Str1);
                    Assert.Equal("yyy", entity.Str2);
                    Assert.Equal(655, entity.Required);
                    Assert.Equal(0, entity.Decimal);
                    Assert.Equal(600, entity.Long);
                    Assert.Equal(888, entity.Double);
                    Assert.Equal(200.0F, entity.Float);

                    await conn.ExecuteAsync(
                        $"drop table if exists {Escape}test{Escape}.{Escape}updatepartcolumns{Escape};");
                }
            }
        }