Description
EntityTools is modeled after Silverlight Contrib/Silverlight Extensions. It currently has a library of extentions for the Entity and EntitySet which provide data import and export abilities.
Documentation
Online documentation can be found at
http://www.riaservicesblog.net/RiaServicesContrib.EntityToolsOffline documentation is available at
http://www.riaservicesblog.net/RiaServicesContrib.EntityTools/Entity%20Tools.chm
Examples
Entity cloning
Person newPerson = newPerson();
newPerson.ApplyState(Nothing, existingPerson.ExtractState(ExtractType.ModifiedState);
newPerson.PersonId = Guid.NewGuid();
context.Persons.Add(newPerson);
Partial Save (i.e. save only a single change instead of the whole DomainContext)
PersonDomainContext tempContext = new PersonDomainContext();
Person savePerson = newPerson();
tempContext.Persons.Add(savePerson);
savePerson.ApplyState(originalPerson.ExtractState(ExtractType.OriginalState, ExtractType.ModifiedState);
tempContext.SubmitChanges();
A more powerful example of performing a partial save can be found at
http://riaservicescontrib.codeplex.com/wikipage?title=PartialSaveWithEntityGraph&referringTitle=EntityGraphs%20
Export EntityList and save to Isolated Storage
using IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()
{
using IsolatedStorageFileStream isfs = new IsolatedStorageFileStream(fileName, FileMode.OpenOrCreate, isf)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(List<EntityStateSet>));
serializer.WriteObject(isfs, context.Persons.Export());
isfs.Close();
}
}
Import information from Isolated Storage into EntityList
using IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()
{
using IsolatedStorageFileStream isfs = new IsolatedStorageFileStream(fileName, FileMode.Open, isf)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(List<EntityStateSet>));
context.Persons.Import(serializer.ReadObject(isfs));
isfs.Close();
}
}
Some things which might not be obvious is that the Export functionality can also be done against a LINQ query, allowing partial exports of entities.