IWP71 | NoSQL
Inside Windows Phone (HD) - Channel 9
English - January 16, 2014 07:08 - 20 minutes - ★★★★ - 5 ratingsTechnology Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed
Previous Episode: IWP70 | Mobile Enterprise Application Platform
Next Episode: IWP72 | Deploying Windows Phone apps for the Enterprise
This week we are meeting again with our big friend Rob Tiffany. This time we talk about NoSQL. It's an easy way to store your data offline on your phone. During this conversation Rob explains what NoSQL is, why you would use it and what the challenges are.
Below are the code samples how to perform the CRUD operations on your in memory classes.
Define Table schema (Entity)
publicsealedclassCustomer
{
publicint CustomerId { get; set; }
publicstring FirstName { get; set; }
publicstring LastName { get; set; }
}
Define Table (Generic List to hold collection of Customer objects)
publicstaticList<Customer> Customers { get; set; }
Create Table
Customers = newList<Customer>();
Save Table
publicstaticasyncTask SaveChanges<T>(T collection, String tableName)
{
var file = awaitApplicationData.Current.LocalFolder.CreateFileAsync(tableName, CreationCollisionOption.ReplaceExisting);
var outStream = await file.OpenStreamForWriteAsync();
var serializer = newDataContractJsonSerializer(typeof(T));
serializer.WriteObject(outStream, collection);
await outStream.FlushAsync();
outStream.Dispose();
}
Calling the Save Table Method
await SaveChanges<List<Customer>>(Customers, "Customer");
Load Table
publicstaticasyncTask<T> LoadTable<T>(string tableName)
{
StorageFile file = awaitApplicationData.Current.LocalFolder.GetFileAsync(tableName);
Stream stream = await file.OpenStreamForReadAsync();
DataContractJsonSerializer serializer = newDataContractJsonSerializer(typeof(T));
T table = (T)serializer.ReadObject(stream);
stream.Dispose();
return table;
}
Calling the Load Table Method
Customers = await LoadTable<List<Customer>>("Customer");
Insert Customers
Customers.Add(newCustomer
{
CustomerId = 1,
FirstName = "Andy",
LastName = "Wigley"
});
Update Customers
foreach (var item in Customers.Where((c) => c.CustomerId == 2))
{
item.FirstName = "Mike";
}
Delete Customers
Customers.RemoveAll((c) => c.CustomerId == 2);
Select Customers
var query = from c inTableService.Customers
select c;
CustomersList.ItemsSource = query.ToList();
Tweet to @robtiffany or @mahoekst