TRANZIENS ADATTÁROLÁS State objektum Egy alkalmazásszintű gyűjtemény (Dictionary), mely Tombstone esetén megőrzi tartalmát a memóriában kulcs/érték párokként.
TRANZIENS ADATTÁROLÁS State objektum // Új bejegyzés hozzáadása vagy frissítése PhoneApplicationService.Current.State.Add("data", "Sample Data");
TRANZIENS ADATTÁROLÁS State objektum // Elem lekérdezése (1) if (PhoneApplicationService.Current.State.ContainsKey("data")) { string data = PhoneApplicationService.Current.State["data"] as string; if (data != null) { // Itt már biztos, hogy jó az érték } // Elem lekérdezése (2) object data; PhoneApplicationService.Current.State.TryGetValue("data", out data); string dataValue = data as string; if (dataValue != null) { // Itt már biztos, hogy jó az érték }
PERZISZTENS ADATTÁROLÁS Isolated Storage Az appok csak a saját elkülönített területüket láthatják A felhasználható terület korlátlan
PERZISZTENS ADATTÁROLÁS Isolated Storage Fájlok és mappák Tárolhatunk fájlokat és mappákat. Speciális mappák Shared/MediaBorítóképeknek Shared/ShellContentCsempék háttérképeinek Shared/TransfersHáttérben futó fel/letöltéseknek
PERZISZTENS ADATTÁROLÁS Isolated Storage // Egy új fájl létrehozása var isoStoreFile = IsolatedStorageFile.GetUserStoreForApplication(); using (var isoStoreStream = isoStoreFile.CreateFile("/Folder/File.text")) { string messageToSave = "Hello World"; byte[] messageBytes = Encoding.UTF8.GetBytes(messageToSave); isoStoreStream.Write(messageBytes, 0, messageBytes.Length); }
PERZISZTENS ADATTÁROLÁS Isolated Storage // Fájl létezésének lekérdezése bool fileExists = isoStoreFile.FileExists("Folder/File.txt"); // Az elmentett fájl visszaolvasása using (var isoStoreStream = isoStoreFile.OpenFile("/Folder/File.text", FileMode.Open)) { byte[] messageBytes = new byte[isoStoreStream.Length]; isoStoreStream.Read(messageBytes, 0, messageBytes.Length); string loadedMessage = Encoding.UTF8.GetString(messageBytes, 0, messageBytes.Length); }
PERZISZTENS ADATTÁROLÁS Isolated Settings Beállítások Tárolhatunk adatot kulcs/érték párokként.
PERZISZTENS ADATTÁROLÁS Isolated Settings // Új bejegyzés hozzáadása vagy frissítése IsolatedStorageSettings.ApplicationSettings.Add("data", "Sample Data"); // Elem lekérdezése string data; IsolatedStorageSettings.ApplicationSettings.TryGetValue("data", out data); if (data != null) { // Itt már biztos, hogy jó az érték }
PERZISZTENS ADATTÁROLÁS Isolated DataBase Relációs adatok Tárolhatunk relációs adatokat a lokális adatbázisban a LINQ to SQL segítségével.
PERZISZTENS ADATTÁROLÁS Isolated DataBase [Table] public class SampleData : INotifyPropertyChanged, INotifyPropertyChanging { // Az osztályt meg kell jelölni a [Table] attribútummal // És meg implementálnia kell az INotifyPropertyChanged // és az INotifyPropertyChanging interfészeket }
PERZISZTENS ADATTÁROLÁS Isolated DataBase [Table] public class SampleData : INotifyPropertyChanged, INotifyPropertyChanging { // Interfész implementálás public event PropertyChangingEventHandler PropertyChanging; public event PropertyChangedEventHandler PropertyChanged; // Hasznos segédmetódus public bool ChangeProperty (ref T oldValue, ref T newValue, string propertyName) { if (oldValue.Equals(newValue)) { return false; } else { PropertyChanging(this, new PropertyChangingEventArgs(propertyName)); oldValue = newValue; PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); return true; }
PERZISZTENS ADATTÁROLÁS Isolated DataBase [Table] public class SampleData : INotifyPropertyChanged, INotifyPropertyChanging { // Kötelező mezők (ID és Version) private int id; [Column( IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, DbType = "INT NOT NULL Identity", AutoSync = AutoSync.OnInsert)] public int ID { get { return id; } set {ChangeProperty (ref id, ref value, "ID"); } } [Column(IsVersion = true)] private Binary version; }
PERZISZTENS ADATTÁROLÁS Isolated DataBase [Table] public class SampleData : INotifyPropertyChanged, INotifyPropertyChanging { // Egy példamező private string data; [Column] public string Data { get { return data; } set {ChangeProperty(ref data, ref value, "Data"); } }
PERZISZTENS ADATTÁROLÁS Isolated DataBase // A kontextus osztály public class SampleDataContext : DataContext { private const string DBConnectionString = "Data Source=isostore:/DataBase.sdf"; public Table SampleDatas; public SampleDataContext() : base(DBConnectionString) { if (!this.DatabaseExists()) // Létezik e már az adatbázis this.CreateDatabase(); // Ha még nem létezett, akkor létre kell hozni }
PERZISZTENS ADATTÁROLÁS Isolated DataBase // Az adatbázis használata using (var db = new SampleDataContext()) { // Adatok kiolvasása LINQ-val var query = from data in db.SampleDatas where data.Data == "Sample Data" select data; // Új adat hozzáadása var sampleData = new SampleData { Data = "Sample Data" }; db.SampleDatas.InsertOnSubmit(sampleData); // FONTOS, hogy ezt meghívjuk db.SubmitChanges(); }