You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Tupitsyn (JIRA)" <ji...@apache.org> on 2016/08/08 14:01:20 UTC

[jira] [Comment Edited] (IGNITE-3630) .NET: Add pure binary mode example with SQL

    [ https://issues.apache.org/jira/browse/IGNITE-3630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15411838#comment-15411838 ] 

Pavel Tupitsyn edited comment on IGNITE-3630 at 8/8/16 2:00 PM:
----------------------------------------------------------------

BinaryModeExample added.


was (Author: ptupitsyn):
BinaryModeExample added,.

> .NET: Add pure binary mode example with SQL
> -------------------------------------------
>
>                 Key: IGNITE-3630
>                 URL: https://issues.apache.org/jira/browse/IGNITE-3630
>             Project: Ignite
>          Issue Type: Improvement
>          Components: platforms
>            Reporter: Pavel Tupitsyn
>            Assignee: Pavel Tupitsyn
>              Labels: .net
>             Fix For: 1.8
>
>
> This is an important Ignite use case: having no classes at all, working with cache in binary mode and running SQL queries.
> We should have a dedicated example for this (regular one and for LINQPad).
> Below is a piece of code that I used for Gitter user question:
> {code}
> using (var ignite = Ignition.Start())
> {
> 	// Configure queries for Person object with FirstName, LastName fields
> 	var cacheConfig = new CacheConfiguration
> 	{
> 		Name = "persons",  // can be anything
> 		QueryEntities = new[]
> 		{
> 			new QueryEntity
> 			{
> 				KeyType = typeof(int),
> 				ValueTypeName = "Person",  // name of the dynamically created type
> 				Fields = new[]  // define fields to be available in queries
> 				{
> 					new QueryField("FirstName", typeof(string)),
> 					new QueryField("LastName", typeof(string))
> 				}
> 			}
> 		}
> 	};
> 	
>     // Create new cache, switch to binary mode
>     var cache = ignite.CreateCache<int, object>(cacheConfig).WithKeepBinary<int, IBinaryObject>();
> 	// Populate the cache
> 	for (var i = 0; i < 10; i++)
> 	{
> 		var person = ignite.GetBinary().GetBuilder("Person")  // same name as in ValueTypeName above
> 			.SetField<string>("FirstName", "Name-" + i)
> 			.SetField<string>("LastName", "LastName-" + i)
> 			.Build();
> 			
> 			cache[i] = person;
>     }
> 	
> 	// SQL query for FirstName ending with "-3"
> 	var qry = cache.Query(new SqlQuery("Person", "where FirstName like '%-3'"));
> 	foreach (ICacheEntry<int, IBinaryObject> cacheEntry in qry)
> 	{
> 		Console.WriteLine("Person {0}:", cacheEntry.Key);
> 		
> 		IBinaryObject person = cacheEntry.Value;
> 		
> 		IBinaryType personType = person.GetBinaryType();
> 		
> 		// Show all fields
> 		foreach (var fieldName in personType.Fields)
> 			Console.WriteLine("  {0}: {1}", fieldName, person.GetField<object>(fieldName));
> 	}
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)