Hello! I believe you have to enable "Allow Overwrite": https://apacheignite-net.readme.io/docs/data-streamers#section-allow-overwrite
Regards, -- Ilya Kasnacheev вт, 19 нояб. 2019 г. в 20:54, Manan Joshi <[email protected]>: > I am trying to update the values of existing cache i am using IDataStremer > to insert data in the cache, I am updating complex objects so SQL is not an > option here is snappit of the code.. > > Can someone suggest something it will be very helpful. > > public void UpdateMetaData(CacheMetaData metaData) > { > var cache1 = CreateOrCheckMetaData(metaData); > var cache = cache1.WithKeepBinary<object, IBinaryObject>(); > using (var streamer = ignite.GetDataStreamer<Guid, > IBinaryObject>(cache.Name)) > { > streamer.RemoveData(metaData.CacheKey); > > var metaDataValueBuilder = > ignite.GetBinary().GetBuilder(IzendaMetaData).SetGuidField("CacheKey", > metaData.CacheKey) > .SetTimestampField("CreatedDate", > metaData.CreatedDate.ToUniversalTime()) > .SetStringField("Schema", > metaData.FetchModal.Schema) > .SetGuidField("ServerType", > metaData.FetchModal.ServerType) > .SetStringField("Table", > metaData.FetchModal.Table) > .SetStringField("ConnectionString", > metaData.FetchModal.ConnectionString) > .SetDictionaryField("TableFields", > metaData.FetchModal.TableFields) > .SetStringArrayField("FieldKeys", > metaData.FetchModal.FieldKeys.ToArray()); > > streamer.AddData(metaData.CacheKey, > metaDataValueBuilder.Build()); > } > } > > private ICache<object, CacheMetaData> > CreateOrCheckMetaData(CacheMetaData metaData) > { > var cacheConfiguration = new CacheConfiguration() { Name = > IzendaMetaData }; > if (ignite.GetCacheNames().Contains(IzendaMetaData)) > { > return ignite.GetCache<object, > CacheMetaData>(cacheConfiguration.Name); > } > else > { > var queryFields = new List<QueryField>(); > queryFields.Add(new QueryField("CreatedDate", > metaData.CreatedDate.GetType())); > queryFields.Add(new QueryField("CacheKey", > metaData.CacheKey.GetType())); > queryFields.Add(new QueryField("Table", > metaData.FetchModal.Table.GetType())); > queryFields.Add(new QueryField("Schema", > metaData.FetchModal.Schema.GetType())); > queryFields.Add(new QueryField("ConnectionString", > metaData.FetchModal.ConnectionString.GetType())); > queryFields.Add(new QueryField("FieldKeys", > metaData.FetchModal.FieldKeys.GetType())); > queryFields.Add(new QueryField("ServerType", > metaData.FetchModal.ServerType.GetType())); > queryFields.Add(new QueryField("TableFields", > metaData.FetchModal.TableFields.GetType())); > cacheConfiguration.QueryEntities = new[] { new QueryEntity > { Fields = queryFields, ValueTypeName = IzendaMetaData, KeyType = > typeof(IBinaryObject) } }; > return ignite.CreateCache<object, > CacheMetaData>(cacheConfiguration); > } > } > > Thanks, > Manan Joshi >
