You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Manan Joshi <ma...@izenda.com> on 2019/11/15 13:08:39 UTC

Store objects as IBinaryobject in cadche

I would like to store any time of object into cache as IBinaryobject, so i
can store cache stored in loosely bind with object. I am working with
Ignite .Net. Can someone please suggest something.

I need something like

MyObject obj = new MyObject();

 obj.setFieldA("A");
 obj.setFieldB(123);

 BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);


Thanks
Manan Joshi

Re: Re: Store objects as IBinaryobject in cadche

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello again!

A tiny addendum - you can mark key fields with QueryField.IsKeyField and
forget what I have said about XML and stuff.

Regards,
-- 
Ilya Kasnacheev


вт, 19 нояб. 2019 г. в 19:36, Ilya Kasnacheev <il...@gmail.com>:

> Hello!
>
> Your code is mostly sound, but there are a few issues of understanding.
>
> Please see my replies inline.
>
> пт, 15 нояб. 2019 г. в 22:43, Manan Joshi <ma...@izenda.com>:
>
>>  public void CreateCache(string connectionString, string schema, string
>> table, Dictionary<string, Type> fields, string[] keys)
>>         {
>>             string query = String.Format("{0} {1}.{2}", "SELECT * FROM",
>> schema, table);
>>             string cachename = CacheNameHash(connectionString, schema,
>> table);
>>             if (_dataSourceAdaptor.TestConnection(_serverType,
>> connectionString).Status == Framework.Constants.ConnectDBStatus.Success)
>>             {
>>                 var result = _dataSourceAdaptor.QueryMultiple<dynamic>(connectionString,
>> query,null,60 ,null).AsList();
>>                 var cacheConfiguration = new CacheConfiguration() {
>>                     Name = cachename, QueryEntities = new[] {
>>                     new QueryEntity { TableName = "Orders" ,
>> ValueTypeName="Orders" , KeyTypeName="Orders", Fields=   new[]
>>
> You should make sure that key type name != value type name to avoid
> confusion, make it OrdersKey perhaps ^?
> If your key is single-field it's best to use primitive type, specify
> KeyFieldName to give it a column name.
>
>                             {
>>                                 new QueryField("OrderID", typeof(int)),
>>                                 new QueryField("EmployeeID", typeof(int)),
>>                                 new QueryField("CustomerID", typeof(int)),
>>                             }, }
>>
> You should probably specify which ones of these reside in key and which in
> value by specifying keyFields. However, it seems that there is no way to
> specify them from .Net API :( this probably means you will have to use XML
> config or use primitive key or use annotations within key class (which you
> will need to create). Pavel, please correct me if I'm wrong.
> You can still use BinaryObject approach here instead of key class, which
> will be only used as reference.
>
>
>>
>>                 } };
>>                 var cache = ignite.GetOrCreateCache<IBinaryObject,
>> IBinaryObject>(cacheConfiguration).WithKeepBinary<IBinaryObject,
>> IBinaryObject>();
>>                 using (var streamer = ignite.GetDataStreamer<IBinaryObject,
>> IBinaryObject>(cache.Name))
>>                 {
>>                     foreach (var item in result)
>>                     {
>>                         var dataRow = (IDictionary<string, object>)item;
>>                         IBinaryObjectBuilder keyBuilder =
>> ignite.GetBinary().GetBuilder(table);
>>                         IBinaryObjectBuilder valueBuilder =
>> ignite.GetBinary().GetBuilder(table);
>>
> These should be "OrdersKey" / "Orders", and *not* table name. This is
> because type name is discriminator and mismatching it will cause data to be
> unavailable for SQL.
>
>                         SetBuiderFields(fields, keys, dataRow,table,out
>> keyBuilder);
>>                         SetBuiderFields(fields, new
>> List<string>(fields.Keys).ToArray(), dataRow, table, out valueBuilder);
>>
>                         streamer.AddData(keyBuilder.
>> Build(),valueBuilder.Build());
>>                     }
>>                 }
>>                 var queryreults = cache.Query(new SqlFieldsQuery("select
>> OrderID from Orders"));
>>
> After those fixes, the code worked for me, provided some results.
>
> Regards,
> --
> Ilya Kasnacheev
>
>
>>
>> On Fri, Nov 15, 2019 at 2:41 PM Pavel Tupitsyn <pt...@apache.org>
>> wrote:
>>
>>> Can you please attach full code as text? Can't run a screenshot :)
>>>
>>> On Fri, Nov 15, 2019 at 10:35 PM Manan Joshi <ma...@izenda.com>
>>> wrote:
>>>
>>>> Some more help :)
>>>>
>>>>
>>>> [image: image.png]
>>>>
>>>> I am seeing cache are stored fine in key and in value but when run the
>>>> query it throws exception on table not found. Can you help me out what i am
>>>> missing?
>>>>
>>>> On Fri, Nov 15, 2019 at 12:32 PM Pavel Tupitsyn <pt...@apache.org>
>>>> wrote:
>>>>
>>>>> Yes, you can use IBinaryObject as a key. Yes, SQL will work too.
>>>>>
>>>>> On Fri, Nov 15, 2019 at 7:51 PM Manan Joshi <ma...@izenda.com>
>>>>> wrote:
>>>>>
>>>>>> Paval,
>>>>>>
>>>>>> Thanks you for response.
>>>>>>
>>>>>> I have trying to insert insert data using datastreamer into ignite ,
>>>>>> Can you tell me what is the best practice to creating key into ignite.
>>>>>>
>>>>>> if i want to create multiple columns of db as key should i use
>>>>>> Ibinaryobject to store as object ? will ignite sql engine understand the
>>>>>> indexes if key is in IBinaryObject.
>>>>>>
>>>>>> Thanks
>>>>>> Manan Joshi
>>>>>>
>>>>>> On Fri, Nov 15, 2019 at 11:00 AM Pavel Tupitsyn <pt...@apache.org>
>>>>>> wrote:
>>>>>>
>>>>>>> When using `dynamic` with Dapper, underlying objects are of type
>>>>>>> DapperRow, which is also IDictionary<string, object>,
>>>>>>> which is easy to convert to BinaryObject. Here is a full example
>>>>>>> with Dapper query:
>>>>>>>
>>>>>>> var dapperQuery = conn.Query("SELECT * FROM Persons");
>>>>>>> foreach (IDictionary<string, object> row in dapperQuery)
>>>>>>> {
>>>>>>>     var builder = ignite.GetBinary().GetBuilder("YourEntityNameHere");
>>>>>>>     foreach (var pair in row)
>>>>>>>     {
>>>>>>>         builder.SetField(pair.Key, pair.Value);
>>>>>>>     }
>>>>>>>
>>>>>>>     var binaryObject = builder.Build();
>>>>>>>     Console.WriteLine(binaryObject);
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Nov 15, 2019 at 5:20 PM Ilya Kasnacheev <
>>>>>>> ilya.kasnacheev@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hello!
>>>>>>>>
>>>>>>>> You can try using ignite.binary().ToBinary(obj).
>>>>>>>>
>>>>>>>> However, in your case, it makes sense to avoid the intermediate
>>>>>>>> object stage directly and produce BinaryObjects from input data using
>>>>>>>> builder.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> --
>>>>>>>> Ilya Kasnacheev
>>>>>>>>
>>>>>>>>
>>>>>>>> пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:
>>>>>>>>
>>>>>>>>> I am reading the data using dapper from the database i am not sure
>>>>>>>>> how to convert fromSystem.Collections.Generic.IEnumbrable<dynamic>
>>>>>>>>> to Apache.Ignite.Core.Binary.IBinaryObject.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>> Manan Joshi
>>>>>>>>>
>>>>>>>>> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <
>>>>>>>>> lexwert@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> You can also refer to the BinaryModeExample.cs
>>>>>>>>>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>>>>>>>>>> example and the docs [1]
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> [1] -
>>>>>>>>>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *From: *Ilya Kasnacheev <il...@gmail.com>
>>>>>>>>>> *Sent: *Friday, November 15, 2019 4:13 PM
>>>>>>>>>> *To: *user@ignite.apache.org
>>>>>>>>>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Hello!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> You can use BinaryObjectBuilder:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> However, each variation of its composition is stored in schema
>>>>>>>>>> cache, which means you should not have too many of those.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> It is recommended to use Map to store all variable/non-essential
>>>>>>>>>> fields if you have a lot of them.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Ilya Kasnacheev
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <manan.joshi@izenda.com
>>>>>>>>>> >:
>>>>>>>>>>
>>>>>>>>>> I would like to store any time of object into cache as
>>>>>>>>>> IBinaryobject, so i can store cache stored in loosely bind with object. I
>>>>>>>>>> am working with Ignite .Net. Can someone please suggest something.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> I need something like
>>>>>>>>>>
>>>>>>>>>> MyObject obj = new MyObject();
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  obj.setFieldA("A");
>>>>>>>>>>
>>>>>>>>>>  obj.setFieldB(123);
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>>
>>>>>>>>>> Manan Joshi
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

Your code is mostly sound, but there are a few issues of understanding.

Please see my replies inline.

пт, 15 нояб. 2019 г. в 22:43, Manan Joshi <ma...@izenda.com>:

>  public void CreateCache(string connectionString, string schema, string
> table, Dictionary<string, Type> fields, string[] keys)
>         {
>             string query = String.Format("{0} {1}.{2}", "SELECT * FROM",
> schema, table);
>             string cachename = CacheNameHash(connectionString, schema,
> table);
>             if (_dataSourceAdaptor.TestConnection(_serverType,
> connectionString).Status == Framework.Constants.ConnectDBStatus.Success)
>             {
>                 var result = _dataSourceAdaptor.QueryMultiple<dynamic>(connectionString,
> query,null,60 ,null).AsList();
>                 var cacheConfiguration = new CacheConfiguration() {
>                     Name = cachename, QueryEntities = new[] {
>                     new QueryEntity { TableName = "Orders" ,
> ValueTypeName="Orders" , KeyTypeName="Orders", Fields=   new[]
>
You should make sure that key type name != value type name to avoid
confusion, make it OrdersKey perhaps ^?
If your key is single-field it's best to use primitive type, specify
KeyFieldName to give it a column name.

                            {
>                                 new QueryField("OrderID", typeof(int)),
>                                 new QueryField("EmployeeID", typeof(int)),
>                                 new QueryField("CustomerID", typeof(int)),
>                             }, }
>
You should probably specify which ones of these reside in key and which in
value by specifying keyFields. However, it seems that there is no way to
specify them from .Net API :( this probably means you will have to use XML
config or use primitive key or use annotations within key class (which you
will need to create). Pavel, please correct me if I'm wrong.
You can still use BinaryObject approach here instead of key class, which
will be only used as reference.


>
>                 } };
>                 var cache = ignite.GetOrCreateCache<IBinaryObject,
> IBinaryObject>(cacheConfiguration).WithKeepBinary<IBinaryObject,
> IBinaryObject>();
>                 using (var streamer = ignite.GetDataStreamer<IBinaryObject,
> IBinaryObject>(cache.Name))
>                 {
>                     foreach (var item in result)
>                     {
>                         var dataRow = (IDictionary<string, object>)item;
>                         IBinaryObjectBuilder keyBuilder =
> ignite.GetBinary().GetBuilder(table);
>                         IBinaryObjectBuilder valueBuilder =
> ignite.GetBinary().GetBuilder(table);
>
These should be "OrdersKey" / "Orders", and *not* table name. This is
because type name is discriminator and mismatching it will cause data to be
unavailable for SQL.

                        SetBuiderFields(fields, keys, dataRow,table,out
> keyBuilder);
>                         SetBuiderFields(fields, new
> List<string>(fields.Keys).ToArray(), dataRow, table, out valueBuilder);
>
                        streamer.AddData(keyBuilder.
> Build(),valueBuilder.Build());
>                     }
>                 }
>                 var queryreults = cache.Query(new SqlFieldsQuery("select
> OrderID from Orders"));
>
After those fixes, the code worked for me, provided some results.

Regards,
-- 
Ilya Kasnacheev


>
> On Fri, Nov 15, 2019 at 2:41 PM Pavel Tupitsyn <pt...@apache.org>
> wrote:
>
>> Can you please attach full code as text? Can't run a screenshot :)
>>
>> On Fri, Nov 15, 2019 at 10:35 PM Manan Joshi <ma...@izenda.com>
>> wrote:
>>
>>> Some more help :)
>>>
>>>
>>> [image: image.png]
>>>
>>> I am seeing cache are stored fine in key and in value but when run the
>>> query it throws exception on table not found. Can you help me out what i am
>>> missing?
>>>
>>> On Fri, Nov 15, 2019 at 12:32 PM Pavel Tupitsyn <pt...@apache.org>
>>> wrote:
>>>
>>>> Yes, you can use IBinaryObject as a key. Yes, SQL will work too.
>>>>
>>>> On Fri, Nov 15, 2019 at 7:51 PM Manan Joshi <ma...@izenda.com>
>>>> wrote:
>>>>
>>>>> Paval,
>>>>>
>>>>> Thanks you for response.
>>>>>
>>>>> I have trying to insert insert data using datastreamer into ignite ,
>>>>> Can you tell me what is the best practice to creating key into ignite.
>>>>>
>>>>> if i want to create multiple columns of db as key should i use
>>>>> Ibinaryobject to store as object ? will ignite sql engine understand the
>>>>> indexes if key is in IBinaryObject.
>>>>>
>>>>> Thanks
>>>>> Manan Joshi
>>>>>
>>>>> On Fri, Nov 15, 2019 at 11:00 AM Pavel Tupitsyn <pt...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> When using `dynamic` with Dapper, underlying objects are of type
>>>>>> DapperRow, which is also IDictionary<string, object>,
>>>>>> which is easy to convert to BinaryObject. Here is a full example with
>>>>>> Dapper query:
>>>>>>
>>>>>> var dapperQuery = conn.Query("SELECT * FROM Persons");
>>>>>> foreach (IDictionary<string, object> row in dapperQuery)
>>>>>> {
>>>>>>     var builder = ignite.GetBinary().GetBuilder("YourEntityNameHere");
>>>>>>     foreach (var pair in row)
>>>>>>     {
>>>>>>         builder.SetField(pair.Key, pair.Value);
>>>>>>     }
>>>>>>
>>>>>>     var binaryObject = builder.Build();
>>>>>>     Console.WriteLine(binaryObject);
>>>>>> }
>>>>>>
>>>>>>
>>>>>> On Fri, Nov 15, 2019 at 5:20 PM Ilya Kasnacheev <
>>>>>> ilya.kasnacheev@gmail.com> wrote:
>>>>>>
>>>>>>> Hello!
>>>>>>>
>>>>>>> You can try using ignite.binary().ToBinary(obj).
>>>>>>>
>>>>>>> However, in your case, it makes sense to avoid the intermediate
>>>>>>> object stage directly and produce BinaryObjects from input data using
>>>>>>> builder.
>>>>>>>
>>>>>>> Regards,
>>>>>>> --
>>>>>>> Ilya Kasnacheev
>>>>>>>
>>>>>>>
>>>>>>> пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:
>>>>>>>
>>>>>>>> I am reading the data using dapper from the database i am not sure
>>>>>>>> how to convert fromSystem.Collections.Generic.IEnumbrable<dynamic>
>>>>>>>> to Apache.Ignite.Core.Binary.IBinaryObject.
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Manan Joshi
>>>>>>>>
>>>>>>>> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> You can also refer to the BinaryModeExample.cs
>>>>>>>>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>>>>>>>>> example and the docs [1]
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> [1] -
>>>>>>>>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *From: *Ilya Kasnacheev <il...@gmail.com>
>>>>>>>>> *Sent: *Friday, November 15, 2019 4:13 PM
>>>>>>>>> *To: *user@ignite.apache.org
>>>>>>>>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hello!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> You can use BinaryObjectBuilder:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> However, each variation of its composition is stored in schema
>>>>>>>>> cache, which means you should not have too many of those.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> It is recommended to use Map to store all variable/non-essential
>>>>>>>>> fields if you have a lot of them.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>> Ilya Kasnacheev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <manan.joshi@izenda.com
>>>>>>>>> >:
>>>>>>>>>
>>>>>>>>> I would like to store any time of object into cache as
>>>>>>>>> IBinaryobject, so i can store cache stored in loosely bind with object. I
>>>>>>>>> am working with Ignite .Net. Can someone please suggest something.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I need something like
>>>>>>>>>
>>>>>>>>> MyObject obj = new MyObject();
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  obj.setFieldA("A");
>>>>>>>>>
>>>>>>>>>  obj.setFieldB(123);
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>
>>>>>>>>> Manan Joshi
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Manan Joshi <ma...@izenda.com>.
 public void CreateCache(string connectionString, string schema, string
table, Dictionary<string, Type> fields, string[] keys)
        {
            string query = String.Format("{0} {1}.{2}", "SELECT * FROM",
schema, table);
            string cachename = CacheNameHash(connectionString, schema,
table);
            if (_dataSourceAdaptor.TestConnection(_serverType,
connectionString).Status == Framework.Constants.ConnectDBStatus.Success)
            {
                var result =
_dataSourceAdaptor.QueryMultiple<dynamic>(connectionString, query,null,60
,null).AsList();
                var cacheConfiguration = new CacheConfiguration() {
                    Name = cachename, QueryEntities = new[] {
                    new QueryEntity { TableName = "Orders" ,
ValueTypeName="Orders" , KeyTypeName="Orders", Fields=   new[]
                            {
                                new QueryField("OrderID", typeof(int)),
                                new QueryField("EmployeeID", typeof(int)),
                                new QueryField("CustomerID", typeof(int)),
                            }, }

                } };
                var cache = ignite.GetOrCreateCache<IBinaryObject,
IBinaryObject>(cacheConfiguration).WithKeepBinary<IBinaryObject,
IBinaryObject>();
                using (var streamer = ignite.GetDataStreamer<IBinaryObject,
IBinaryObject>(cache.Name))
                {
                    foreach (var item in result)
                    {
                        var dataRow = (IDictionary<string, object>)item;
                        IBinaryObjectBuilder keyBuilder =
ignite.GetBinary().GetBuilder(table);
                        IBinaryObjectBuilder valueBuilder =
ignite.GetBinary().GetBuilder(table);
                        SetBuiderFields(fields, keys, dataRow,table,out
keyBuilder);
                        SetBuiderFields(fields, new
List<string>(fields.Keys).ToArray(), dataRow, table, out valueBuilder);

streamer.AddData(keyBuilder.Build(),valueBuilder.Build());
                    }
                }
                var queryreults = cache.Query(new SqlFieldsQuery("select
OrderID from Orders"));
            }

        }

        private void SetBuiderFields(Dictionary<string, Type> fields,
string[] keys, IDictionary<string, object> dataRow,
                                    string tablename ,out
IBinaryObjectBuilder builder)
        {
            builder = ignite.GetBinary().GetBuilder(tablename);
            foreach (var field in keys)
            {
                switch (Type.GetTypeCode(fields[field]))
                {
                    case TypeCode.Byte:
                        builder.SetByteField(field, (byte)dataRow[field]);
                        break;
                    case TypeCode.String:
                        builder.SetStringField(field,
(string)dataRow[field]);
                        break;
                    case TypeCode.Int16:
                        builder.SetShortField(field, (Int16)dataRow[field]);
                        break;
                    case TypeCode.Int32:
                        builder.SetIntField(field, (Int32)dataRow[field]);
                        break;
                    case TypeCode.Int64:
                        builder.SetLongField(field, (long)dataRow[field]);
                        break;
                    case TypeCode.Decimal:
                        builder.SetDecimalField(field,
(decimal)dataRow[field]);
                        break;
                    case TypeCode.Double:
                        builder.SetDoubleField(field,
(double)dataRow[field]);
                        break;
                    default:
                        builder.SetField(field, dataRow[field]);
                        break;
                }
            }
        }

On Fri, Nov 15, 2019 at 2:41 PM Pavel Tupitsyn <pt...@apache.org> wrote:

> Can you please attach full code as text? Can't run a screenshot :)
>
> On Fri, Nov 15, 2019 at 10:35 PM Manan Joshi <ma...@izenda.com>
> wrote:
>
>> Some more help :)
>>
>>
>> [image: image.png]
>>
>> I am seeing cache are stored fine in key and in value but when run the
>> query it throws exception on table not found. Can you help me out what i am
>> missing?
>>
>> On Fri, Nov 15, 2019 at 12:32 PM Pavel Tupitsyn <pt...@apache.org>
>> wrote:
>>
>>> Yes, you can use IBinaryObject as a key. Yes, SQL will work too.
>>>
>>> On Fri, Nov 15, 2019 at 7:51 PM Manan Joshi <ma...@izenda.com>
>>> wrote:
>>>
>>>> Paval,
>>>>
>>>> Thanks you for response.
>>>>
>>>> I have trying to insert insert data using datastreamer into ignite ,
>>>> Can you tell me what is the best practice to creating key into ignite.
>>>>
>>>> if i want to create multiple columns of db as key should i use
>>>> Ibinaryobject to store as object ? will ignite sql engine understand the
>>>> indexes if key is in IBinaryObject.
>>>>
>>>> Thanks
>>>> Manan Joshi
>>>>
>>>> On Fri, Nov 15, 2019 at 11:00 AM Pavel Tupitsyn <pt...@apache.org>
>>>> wrote:
>>>>
>>>>> When using `dynamic` with Dapper, underlying objects are of type
>>>>> DapperRow, which is also IDictionary<string, object>,
>>>>> which is easy to convert to BinaryObject. Here is a full example with
>>>>> Dapper query:
>>>>>
>>>>> var dapperQuery = conn.Query("SELECT * FROM Persons");
>>>>> foreach (IDictionary<string, object> row in dapperQuery)
>>>>> {
>>>>>     var builder = ignite.GetBinary().GetBuilder("YourEntityNameHere");
>>>>>     foreach (var pair in row)
>>>>>     {
>>>>>         builder.SetField(pair.Key, pair.Value);
>>>>>     }
>>>>>
>>>>>     var binaryObject = builder.Build();
>>>>>     Console.WriteLine(binaryObject);
>>>>> }
>>>>>
>>>>>
>>>>> On Fri, Nov 15, 2019 at 5:20 PM Ilya Kasnacheev <
>>>>> ilya.kasnacheev@gmail.com> wrote:
>>>>>
>>>>>> Hello!
>>>>>>
>>>>>> You can try using ignite.binary().ToBinary(obj).
>>>>>>
>>>>>> However, in your case, it makes sense to avoid the intermediate
>>>>>> object stage directly and produce BinaryObjects from input data using
>>>>>> builder.
>>>>>>
>>>>>> Regards,
>>>>>> --
>>>>>> Ilya Kasnacheev
>>>>>>
>>>>>>
>>>>>> пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:
>>>>>>
>>>>>>> I am reading the data using dapper from the database i am not sure
>>>>>>> how to convert fromSystem.Collections.Generic.IEnumbrable<dynamic>
>>>>>>> to Apache.Ignite.Core.Binary.IBinaryObject.
>>>>>>>
>>>>>>> Thanks
>>>>>>> Manan Joshi
>>>>>>>
>>>>>>> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> You can also refer to the BinaryModeExample.cs
>>>>>>>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>>>>>>>> example and the docs [1]
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> [1] -
>>>>>>>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> *From: *Ilya Kasnacheev <il...@gmail.com>
>>>>>>>> *Sent: *Friday, November 15, 2019 4:13 PM
>>>>>>>> *To: *user@ignite.apache.org
>>>>>>>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Hello!
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> You can use BinaryObjectBuilder:
>>>>>>>>
>>>>>>>>
>>>>>>>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> However, each variation of its composition is stored in schema
>>>>>>>> cache, which means you should not have too many of those.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> It is recommended to use Map to store all variable/non-essential
>>>>>>>> fields if you have a lot of them.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> Ilya Kasnacheev
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:
>>>>>>>>
>>>>>>>> I would like to store any time of object into cache as
>>>>>>>> IBinaryobject, so i can store cache stored in loosely bind with object. I
>>>>>>>> am working with Ignite .Net. Can someone please suggest something.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I need something like
>>>>>>>>
>>>>>>>> MyObject obj = new MyObject();
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>  obj.setFieldA("A");
>>>>>>>>
>>>>>>>>  obj.setFieldB(123);
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> Manan Joshi
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Pavel Tupitsyn <pt...@apache.org>.
Can you please attach full code as text? Can't run a screenshot :)

On Fri, Nov 15, 2019 at 10:35 PM Manan Joshi <ma...@izenda.com> wrote:

> Some more help :)
>
>
> [image: image.png]
>
> I am seeing cache are stored fine in key and in value but when run the
> query it throws exception on table not found. Can you help me out what i am
> missing?
>
> On Fri, Nov 15, 2019 at 12:32 PM Pavel Tupitsyn <pt...@apache.org>
> wrote:
>
>> Yes, you can use IBinaryObject as a key. Yes, SQL will work too.
>>
>> On Fri, Nov 15, 2019 at 7:51 PM Manan Joshi <ma...@izenda.com>
>> wrote:
>>
>>> Paval,
>>>
>>> Thanks you for response.
>>>
>>> I have trying to insert insert data using datastreamer into ignite , Can
>>> you tell me what is the best practice to creating key into ignite.
>>>
>>> if i want to create multiple columns of db as key should i use
>>> Ibinaryobject to store as object ? will ignite sql engine understand the
>>> indexes if key is in IBinaryObject.
>>>
>>> Thanks
>>> Manan Joshi
>>>
>>> On Fri, Nov 15, 2019 at 11:00 AM Pavel Tupitsyn <pt...@apache.org>
>>> wrote:
>>>
>>>> When using `dynamic` with Dapper, underlying objects are of type
>>>> DapperRow, which is also IDictionary<string, object>,
>>>> which is easy to convert to BinaryObject. Here is a full example with
>>>> Dapper query:
>>>>
>>>> var dapperQuery = conn.Query("SELECT * FROM Persons");
>>>> foreach (IDictionary<string, object> row in dapperQuery)
>>>> {
>>>>     var builder = ignite.GetBinary().GetBuilder("YourEntityNameHere");
>>>>     foreach (var pair in row)
>>>>     {
>>>>         builder.SetField(pair.Key, pair.Value);
>>>>     }
>>>>
>>>>     var binaryObject = builder.Build();
>>>>     Console.WriteLine(binaryObject);
>>>> }
>>>>
>>>>
>>>> On Fri, Nov 15, 2019 at 5:20 PM Ilya Kasnacheev <
>>>> ilya.kasnacheev@gmail.com> wrote:
>>>>
>>>>> Hello!
>>>>>
>>>>> You can try using ignite.binary().ToBinary(obj).
>>>>>
>>>>> However, in your case, it makes sense to avoid the intermediate object
>>>>> stage directly and produce BinaryObjects from input data using builder.
>>>>>
>>>>> Regards,
>>>>> --
>>>>> Ilya Kasnacheev
>>>>>
>>>>>
>>>>> пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:
>>>>>
>>>>>> I am reading the data using dapper from the database i am not sure
>>>>>> how to convert fromSystem.Collections.Generic.IEnumbrable<dynamic>
>>>>>> to Apache.Ignite.Core.Binary.IBinaryObject.
>>>>>>
>>>>>> Thanks
>>>>>> Manan Joshi
>>>>>>
>>>>>> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> You can also refer to the BinaryModeExample.cs
>>>>>>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>>>>>>> example and the docs [1]
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> [1] -
>>>>>>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *From: *Ilya Kasnacheev <il...@gmail.com>
>>>>>>> *Sent: *Friday, November 15, 2019 4:13 PM
>>>>>>> *To: *user@ignite.apache.org
>>>>>>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Hello!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> You can use BinaryObjectBuilder:
>>>>>>>
>>>>>>>
>>>>>>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> However, each variation of its composition is stored in schema
>>>>>>> cache, which means you should not have too many of those.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> It is recommended to use Map to store all variable/non-essential
>>>>>>> fields if you have a lot of them.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Ilya Kasnacheev
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:
>>>>>>>
>>>>>>> I would like to store any time of object into cache as
>>>>>>> IBinaryobject, so i can store cache stored in loosely bind with object. I
>>>>>>> am working with Ignite .Net. Can someone please suggest something.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> I need something like
>>>>>>>
>>>>>>> MyObject obj = new MyObject();
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>  obj.setFieldA("A");
>>>>>>>
>>>>>>>  obj.setFieldB(123);
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>> Manan Joshi
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Manan Joshi <ma...@izenda.com>.
Some more help :)


[image: image.png]

I am seeing cache are stored fine in key and in value but when run the
query it throws exception on table not found. Can you help me out what i am
missing?

On Fri, Nov 15, 2019 at 12:32 PM Pavel Tupitsyn <pt...@apache.org>
wrote:

> Yes, you can use IBinaryObject as a key. Yes, SQL will work too.
>
> On Fri, Nov 15, 2019 at 7:51 PM Manan Joshi <ma...@izenda.com>
> wrote:
>
>> Paval,
>>
>> Thanks you for response.
>>
>> I have trying to insert insert data using datastreamer into ignite , Can
>> you tell me what is the best practice to creating key into ignite.
>>
>> if i want to create multiple columns of db as key should i use
>> Ibinaryobject to store as object ? will ignite sql engine understand the
>> indexes if key is in IBinaryObject.
>>
>> Thanks
>> Manan Joshi
>>
>> On Fri, Nov 15, 2019 at 11:00 AM Pavel Tupitsyn <pt...@apache.org>
>> wrote:
>>
>>> When using `dynamic` with Dapper, underlying objects are of type
>>> DapperRow, which is also IDictionary<string, object>,
>>> which is easy to convert to BinaryObject. Here is a full example with
>>> Dapper query:
>>>
>>> var dapperQuery = conn.Query("SELECT * FROM Persons");
>>> foreach (IDictionary<string, object> row in dapperQuery)
>>> {
>>>     var builder = ignite.GetBinary().GetBuilder("YourEntityNameHere");
>>>     foreach (var pair in row)
>>>     {
>>>         builder.SetField(pair.Key, pair.Value);
>>>     }
>>>
>>>     var binaryObject = builder.Build();
>>>     Console.WriteLine(binaryObject);
>>> }
>>>
>>>
>>> On Fri, Nov 15, 2019 at 5:20 PM Ilya Kasnacheev <
>>> ilya.kasnacheev@gmail.com> wrote:
>>>
>>>> Hello!
>>>>
>>>> You can try using ignite.binary().ToBinary(obj).
>>>>
>>>> However, in your case, it makes sense to avoid the intermediate object
>>>> stage directly and produce BinaryObjects from input data using builder.
>>>>
>>>> Regards,
>>>> --
>>>> Ilya Kasnacheev
>>>>
>>>>
>>>> пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:
>>>>
>>>>> I am reading the data using dapper from the database i am not sure how
>>>>> to convert fromSystem.Collections.Generic.IEnumbrable<dynamic> to
>>>>> Apache.Ignite.Core.Binary.IBinaryObject.
>>>>>
>>>>> Thanks
>>>>> Manan Joshi
>>>>>
>>>>> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> You can also refer to the BinaryModeExample.cs
>>>>>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>>>>>> example and the docs [1]
>>>>>>
>>>>>>
>>>>>>
>>>>>> [1] -
>>>>>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>>>>>
>>>>>>
>>>>>>
>>>>>> *From: *Ilya Kasnacheev <il...@gmail.com>
>>>>>> *Sent: *Friday, November 15, 2019 4:13 PM
>>>>>> *To: *user@ignite.apache.org
>>>>>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>>>>>
>>>>>>
>>>>>>
>>>>>> Hello!
>>>>>>
>>>>>>
>>>>>>
>>>>>> You can use BinaryObjectBuilder:
>>>>>>
>>>>>>
>>>>>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>>>>>
>>>>>>
>>>>>>
>>>>>> However, each variation of its composition is stored in schema cache,
>>>>>> which means you should not have too many of those.
>>>>>>
>>>>>>
>>>>>>
>>>>>> It is recommended to use Map to store all variable/non-essential
>>>>>> fields if you have a lot of them.
>>>>>>
>>>>>>
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Ilya Kasnacheev
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:
>>>>>>
>>>>>> I would like to store any time of object into cache as IBinaryobject,
>>>>>> so i can store cache stored in loosely bind with object. I am working with
>>>>>> Ignite .Net. Can someone please suggest something.
>>>>>>
>>>>>>
>>>>>>
>>>>>> I need something like
>>>>>>
>>>>>> MyObject obj = new MyObject();
>>>>>>
>>>>>>
>>>>>>
>>>>>>  obj.setFieldA("A");
>>>>>>
>>>>>>  obj.setFieldB(123);
>>>>>>
>>>>>>
>>>>>>
>>>>>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>>>>>
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Manan Joshi
>>>>>>
>>>>>>
>>>>>>
>>>>>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Pavel Tupitsyn <pt...@apache.org>.
Yes, you can use IBinaryObject as a key. Yes, SQL will work too.

On Fri, Nov 15, 2019 at 7:51 PM Manan Joshi <ma...@izenda.com> wrote:

> Paval,
>
> Thanks you for response.
>
> I have trying to insert insert data using datastreamer into ignite , Can
> you tell me what is the best practice to creating key into ignite.
>
> if i want to create multiple columns of db as key should i use
> Ibinaryobject to store as object ? will ignite sql engine understand the
> indexes if key is in IBinaryObject.
>
> Thanks
> Manan Joshi
>
> On Fri, Nov 15, 2019 at 11:00 AM Pavel Tupitsyn <pt...@apache.org>
> wrote:
>
>> When using `dynamic` with Dapper, underlying objects are of type
>> DapperRow, which is also IDictionary<string, object>,
>> which is easy to convert to BinaryObject. Here is a full example with
>> Dapper query:
>>
>> var dapperQuery = conn.Query("SELECT * FROM Persons");
>> foreach (IDictionary<string, object> row in dapperQuery)
>> {
>>     var builder = ignite.GetBinary().GetBuilder("YourEntityNameHere");
>>     foreach (var pair in row)
>>     {
>>         builder.SetField(pair.Key, pair.Value);
>>     }
>>
>>     var binaryObject = builder.Build();
>>     Console.WriteLine(binaryObject);
>> }
>>
>>
>> On Fri, Nov 15, 2019 at 5:20 PM Ilya Kasnacheev <
>> ilya.kasnacheev@gmail.com> wrote:
>>
>>> Hello!
>>>
>>> You can try using ignite.binary().ToBinary(obj).
>>>
>>> However, in your case, it makes sense to avoid the intermediate object
>>> stage directly and produce BinaryObjects from input data using builder.
>>>
>>> Regards,
>>> --
>>> Ilya Kasnacheev
>>>
>>>
>>> пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:
>>>
>>>> I am reading the data using dapper from the database i am not sure how
>>>> to convert fromSystem.Collections.Generic.IEnumbrable<dynamic> to
>>>> Apache.Ignite.Core.Binary.IBinaryObject.
>>>>
>>>> Thanks
>>>> Manan Joshi
>>>>
>>>> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com>
>>>> wrote:
>>>>
>>>>> You can also refer to the BinaryModeExample.cs
>>>>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>>>>> example and the docs [1]
>>>>>
>>>>>
>>>>>
>>>>> [1] -
>>>>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>>>>
>>>>>
>>>>>
>>>>> *From: *Ilya Kasnacheev <il...@gmail.com>
>>>>> *Sent: *Friday, November 15, 2019 4:13 PM
>>>>> *To: *user@ignite.apache.org
>>>>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>>>>
>>>>>
>>>>>
>>>>> Hello!
>>>>>
>>>>>
>>>>>
>>>>> You can use BinaryObjectBuilder:
>>>>>
>>>>>
>>>>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>>>>
>>>>>
>>>>>
>>>>> However, each variation of its composition is stored in schema cache,
>>>>> which means you should not have too many of those.
>>>>>
>>>>>
>>>>>
>>>>> It is recommended to use Map to store all variable/non-essential
>>>>> fields if you have a lot of them.
>>>>>
>>>>>
>>>>>
>>>>> Regards,
>>>>>
>>>>> --
>>>>>
>>>>> Ilya Kasnacheev
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:
>>>>>
>>>>> I would like to store any time of object into cache as IBinaryobject,
>>>>> so i can store cache stored in loosely bind with object. I am working with
>>>>> Ignite .Net. Can someone please suggest something.
>>>>>
>>>>>
>>>>>
>>>>> I need something like
>>>>>
>>>>> MyObject obj = new MyObject();
>>>>>
>>>>>
>>>>>
>>>>>  obj.setFieldA("A");
>>>>>
>>>>>  obj.setFieldB(123);
>>>>>
>>>>>
>>>>>
>>>>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>>>>
>>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>> Manan Joshi
>>>>>
>>>>>
>>>>>
>>>>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Manan Joshi <ma...@izenda.com>.
Paval,

Thanks you for response.

I have trying to insert insert data using datastreamer into ignite , Can
you tell me what is the best practice to creating key into ignite.

if i want to create multiple columns of db as key should i use
Ibinaryobject to store as object ? will ignite sql engine understand the
indexes if key is in IBinaryObject.

Thanks
Manan Joshi

On Fri, Nov 15, 2019 at 11:00 AM Pavel Tupitsyn <pt...@apache.org>
wrote:

> When using `dynamic` with Dapper, underlying objects are of type
> DapperRow, which is also IDictionary<string, object>,
> which is easy to convert to BinaryObject. Here is a full example with
> Dapper query:
>
> var dapperQuery = conn.Query("SELECT * FROM Persons");
> foreach (IDictionary<string, object> row in dapperQuery)
> {
>     var builder = ignite.GetBinary().GetBuilder("YourEntityNameHere");
>     foreach (var pair in row)
>     {
>         builder.SetField(pair.Key, pair.Value);
>     }
>
>     var binaryObject = builder.Build();
>     Console.WriteLine(binaryObject);
> }
>
>
> On Fri, Nov 15, 2019 at 5:20 PM Ilya Kasnacheev <il...@gmail.com>
> wrote:
>
>> Hello!
>>
>> You can try using ignite.binary().ToBinary(obj).
>>
>> However, in your case, it makes sense to avoid the intermediate object
>> stage directly and produce BinaryObjects from input data using builder.
>>
>> Regards,
>> --
>> Ilya Kasnacheev
>>
>>
>> пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:
>>
>>> I am reading the data using dapper from the database i am not sure how
>>> to convert fromSystem.Collections.Generic.IEnumbrable<dynamic> to
>>> Apache.Ignite.Core.Binary.IBinaryObject.
>>>
>>> Thanks
>>> Manan Joshi
>>>
>>> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com>
>>> wrote:
>>>
>>>> You can also refer to the BinaryModeExample.cs
>>>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>>>> example and the docs [1]
>>>>
>>>>
>>>>
>>>> [1] -
>>>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>>>
>>>>
>>>>
>>>> *From: *Ilya Kasnacheev <il...@gmail.com>
>>>> *Sent: *Friday, November 15, 2019 4:13 PM
>>>> *To: *user@ignite.apache.org
>>>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>>>
>>>>
>>>>
>>>> Hello!
>>>>
>>>>
>>>>
>>>> You can use BinaryObjectBuilder:
>>>>
>>>>
>>>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>>>
>>>>
>>>>
>>>> However, each variation of its composition is stored in schema cache,
>>>> which means you should not have too many of those.
>>>>
>>>>
>>>>
>>>> It is recommended to use Map to store all variable/non-essential fields
>>>> if you have a lot of them.
>>>>
>>>>
>>>>
>>>> Regards,
>>>>
>>>> --
>>>>
>>>> Ilya Kasnacheev
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:
>>>>
>>>> I would like to store any time of object into cache as IBinaryobject,
>>>> so i can store cache stored in loosely bind with object. I am working with
>>>> Ignite .Net. Can someone please suggest something.
>>>>
>>>>
>>>>
>>>> I need something like
>>>>
>>>> MyObject obj = new MyObject();
>>>>
>>>>
>>>>
>>>>  obj.setFieldA("A");
>>>>
>>>>  obj.setFieldB(123);
>>>>
>>>>
>>>>
>>>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>>>
>>>>
>>>>
>>>> Thanks
>>>>
>>>> Manan Joshi
>>>>
>>>>
>>>>
>>>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Pavel Tupitsyn <pt...@apache.org>.
When using `dynamic` with Dapper, underlying objects are of type DapperRow,
which is also IDictionary<string, object>,
which is easy to convert to BinaryObject. Here is a full example with
Dapper query:

var dapperQuery = conn.Query("SELECT * FROM Persons");
foreach (IDictionary<string, object> row in dapperQuery)
{
    var builder = ignite.GetBinary().GetBuilder("YourEntityNameHere");
    foreach (var pair in row)
    {
        builder.SetField(pair.Key, pair.Value);
    }

    var binaryObject = builder.Build();
    Console.WriteLine(binaryObject);
}


On Fri, Nov 15, 2019 at 5:20 PM Ilya Kasnacheev <il...@gmail.com>
wrote:

> Hello!
>
> You can try using ignite.binary().ToBinary(obj).
>
> However, in your case, it makes sense to avoid the intermediate object
> stage directly and produce BinaryObjects from input data using builder.
>
> Regards,
> --
> Ilya Kasnacheev
>
>
> пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:
>
>> I am reading the data using dapper from the database i am not sure how to
>> convert fromSystem.Collections.Generic.IEnumbrable<dynamic> to
>> Apache.Ignite.Core.Binary.IBinaryObject.
>>
>> Thanks
>> Manan Joshi
>>
>> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com>
>> wrote:
>>
>>> You can also refer to the BinaryModeExample.cs
>>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>>> example and the docs [1]
>>>
>>>
>>>
>>> [1] -
>>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>>
>>>
>>>
>>> *From: *Ilya Kasnacheev <il...@gmail.com>
>>> *Sent: *Friday, November 15, 2019 4:13 PM
>>> *To: *user@ignite.apache.org
>>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>>
>>>
>>>
>>> Hello!
>>>
>>>
>>>
>>> You can use BinaryObjectBuilder:
>>>
>>>
>>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>>
>>>
>>>
>>> However, each variation of its composition is stored in schema cache,
>>> which means you should not have too many of those.
>>>
>>>
>>>
>>> It is recommended to use Map to store all variable/non-essential fields
>>> if you have a lot of them.
>>>
>>>
>>>
>>> Regards,
>>>
>>> --
>>>
>>> Ilya Kasnacheev
>>>
>>>
>>>
>>>
>>>
>>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:
>>>
>>> I would like to store any time of object into cache as IBinaryobject, so
>>> i can store cache stored in loosely bind with object. I am working with
>>> Ignite .Net. Can someone please suggest something.
>>>
>>>
>>>
>>> I need something like
>>>
>>> MyObject obj = new MyObject();
>>>
>>>
>>>
>>>  obj.setFieldA("A");
>>>
>>>  obj.setFieldB(123);
>>>
>>>
>>>
>>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>>
>>>
>>>
>>> Thanks
>>>
>>> Manan Joshi
>>>
>>>
>>>
>>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

You can try using ignite.binary().ToBinary(obj).

However, in your case, it makes sense to avoid the intermediate object
stage directly and produce BinaryObjects from input data using builder.

Regards,
-- 
Ilya Kasnacheev


пт, 15 нояб. 2019 г. в 17:15, Manan Joshi <ma...@izenda.com>:

> I am reading the data using dapper from the database i am not sure how to
> convert fromSystem.Collections.Generic.IEnumbrable<dynamic> to
> Apache.Ignite.Core.Binary.IBinaryObject.
>
> Thanks
> Manan Joshi
>
> On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com>
> wrote:
>
>> You can also refer to the BinaryModeExample.cs
>> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
>> example and the docs [1]
>>
>>
>>
>> [1] -
>> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>>
>>
>>
>> *From: *Ilya Kasnacheev <il...@gmail.com>
>> *Sent: *Friday, November 15, 2019 4:13 PM
>> *To: *user@ignite.apache.org
>> *Subject: *Re: Store objects as IBinaryobject in cadche
>>
>>
>>
>> Hello!
>>
>>
>>
>> You can use BinaryObjectBuilder:
>>
>>
>> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>>
>>
>>
>> However, each variation of its composition is stored in schema cache,
>> which means you should not have too many of those.
>>
>>
>>
>> It is recommended to use Map to store all variable/non-essential fields
>> if you have a lot of them.
>>
>>
>>
>> Regards,
>>
>> --
>>
>> Ilya Kasnacheev
>>
>>
>>
>>
>>
>> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:
>>
>> I would like to store any time of object into cache as IBinaryobject, so
>> i can store cache stored in loosely bind with object. I am working with
>> Ignite .Net. Can someone please suggest something.
>>
>>
>>
>> I need something like
>>
>> MyObject obj = new MyObject();
>>
>>
>>
>>  obj.setFieldA("A");
>>
>>  obj.setFieldB(123);
>>
>>
>>
>>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>>
>>
>>
>> Thanks
>>
>> Manan Joshi
>>
>>
>>
>

Re: Re: Store objects as IBinaryobject in cadche

Posted by Manan Joshi <ma...@izenda.com>.
I am reading the data using dapper from the database i am not sure how to
convert fromSystem.Collections.Generic.IEnumbrable<dynamic> to
Apache.Ignite.Core.Binary.IBinaryObject.

Thanks
Manan Joshi

On Fri, Nov 15, 2019 at 8:46 AM Alexandr Shapkin <le...@gmail.com> wrote:

> You can also refer to the BinaryModeExample.cs
> <https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/examples/Apache.Ignite.Examples/Datagrid/BinaryModeExample.cs>
> example and the docs [1]
>
>
>
> [1] -
> https://apacheignite-net.readme.io/docs/binary-mode#section-creating-binary-objects
>
>
>
> *From: *Ilya Kasnacheev <il...@gmail.com>
> *Sent: *Friday, November 15, 2019 4:13 PM
> *To: *user@ignite.apache.org
> *Subject: *Re: Store objects as IBinaryobject in cadche
>
>
>
> Hello!
>
>
>
> You can use BinaryObjectBuilder:
>
>
> https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder
>
>
>
> However, each variation of its composition is stored in schema cache,
> which means you should not have too many of those.
>
>
>
> It is recommended to use Map to store all variable/non-essential fields if
> you have a lot of them.
>
>
>
> Regards,
>
> --
>
> Ilya Kasnacheev
>
>
>
>
>
> пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:
>
> I would like to store any time of object into cache as IBinaryobject, so i
> can store cache stored in loosely bind with object. I am working with
> Ignite .Net. Can someone please suggest something.
>
>
>
> I need something like
>
> MyObject obj = new MyObject();
>
>
>
>  obj.setFieldA("A");
>
>  obj.setFieldB(123);
>
>
>
>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>
>
>
> Thanks
>
> Manan Joshi
>
>
>

Re: Store objects as IBinaryobject in cadche

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

You can use BinaryObjectBuilder:
https://apacheignite.readme.io/docs/binary-marshaller#section-modifying-binary-objects-using-binaryobjectbuilder

However, each variation of its composition is stored in schema cache, which
means you should not have too many of those.

It is recommended to use Map to store all variable/non-essential fields if
you have a lot of them.

Regards,
-- 
Ilya Kasnacheev


пт, 15 нояб. 2019 г. в 16:08, Manan Joshi <ma...@izenda.com>:

> I would like to store any time of object into cache as IBinaryobject, so i
> can store cache stored in loosely bind with object. I am working with
> Ignite .Net. Can someone please suggest something.
>
> I need something like
>
> MyObject obj = new MyObject();
>
>  obj.setFieldA("A");
>  obj.setFieldB(123);
>
>  BinaryObject binaryObj = Ignition.ignite().binary().toBinary(obj);
>
>
> Thanks
> Manan Joshi
>