160 likes | 271 Views
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 k ulcs/érték párokként. TRANZIENS ADATTÁROLÁS. State objektum. // Új bejegyzés hozzáadása vagy frissítése
E N D
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"] asstring; 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); stringdataValue = data asstring; 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/Media Borítóképeknek Shared/ShellContent Csempék háttérképeinek Shared/Transfers Háttérben futó fel/letöltéseknek
PERZISZTENS ADATTÁROLÁS Isolated Storage // Egyújfájllétrehozása varisoStoreFile = IsolatedStorageFile.GetUserStoreForApplication(); using (varisoStoreStream = isoStoreFile.CreateFile("/Folder/File.text")) { stringmessageToSave = "Hello World"; byte[] messageBytes = Encoding.UTF8.GetBytes(messageToSave); isoStoreStream.Write(messageBytes, 0, messageBytes.Length); }
PERZISZTENS ADATTÁROLÁS Isolated Storage // Fájllétezéséneklekérdezése boolfileExists = isoStoreFile.FileExists("Folder/File.txt"); // Azelmentettfájlvisszaolvasása using (varisoStoreStream = isoStoreFile.OpenFile("/Folder/File.text", FileMode.Open)) { byte[] messageBytes = newbyte[isoStoreStream.Length]; isoStoreStream.Read(messageBytes, 0, messageBytes.Length); stringloadedMessage = 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 // Újbejegyzéshozzáadásavagyfrissítése IsolatedStorageSettings.ApplicationSettings.Add("data", "Sample Data"); // Elem lekérdezése string data; IsolatedStorageSettings.ApplicationSettings.TryGetValue("data", out data); if (data != null) { // Ittmárbiztos, hogyjó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] publicclassSampleData: INotifyPropertyChanged, INotifyPropertyChanging { // Az osztályt meg kell jelölni a [Table] attribútummal // És meg implementálniakellazINotifyPropertyChanged // ésazINotifyPropertyChanginginterfészeket }
PERZISZTENS ADATTÁROLÁS Isolated DataBase [Table] publicclassSampleData: INotifyPropertyChanged, INotifyPropertyChanging { // Interfész implementálás publiceventPropertyChangingEventHandlerPropertyChanging; publiceventPropertyChangedEventHandlerPropertyChanged; // Hasznos segédmetódus publicboolChangeProperty<T>(ref T oldValue, ref T newValue, stringpropertyName) { if (oldValue.Equals(newValue)) { returnfalse; } else { PropertyChanging(this, newPropertyChangingEventArgs(propertyName)); oldValue = newValue; PropertyChanged(this, newPropertyChangedEventArgs(propertyName)); returntrue; } } }
PERZISZTENS ADATTÁROLÁS Isolated DataBase [Table] publicclassSampleData: INotifyPropertyChanged, INotifyPropertyChanging { // Kötelező mezők (ID és Version) privateint id; [Column( IsPrimaryKey = true, IsDbGenerated = true, CanBeNull = false, DbType = "INT NOT NULL Identity", AutoSync = AutoSync.OnInsert)] publicint ID { get { return id; } set{ChangeProperty (ref id, refvalue, "ID"); } } [Column(IsVersion = true)] privateBinary version; }
PERZISZTENS ADATTÁROLÁS Isolated DataBase [Table] publicclassSampleData: INotifyPropertyChanged, INotifyPropertyChanging { // Egy példamező privatestring data; [Column] publicstring Data { get { return data; } set{ChangeProperty(refdata, refvalue, "Data"); } } }
PERZISZTENS ADATTÁROLÁS Isolated DataBase // A kontextusosztály publicclassSampleDataContext : DataContext { privateconststringDBConnectionString = "Data Source=isostore:/DataBase.sdf"; publicTable<SampleData> SampleDatas; publicSampleDataContext() : base(DBConnectionString) { if (!this.DatabaseExists()) // Létezik e márazadatbázis this.CreateDatabase(); // Ha mégnemlétezett, akkorlétrekellhozni } }
PERZISZTENS ADATTÁROLÁS Isolated DataBase // Azadatbázishasználata using (vardb = newSampleDataContext()) { // Adatokkiolvasása LINQ-val var query = from data indb.SampleDatas wheredata.Data == "Sample Data" select data; // Újadathozzáadása varsampleData = newSampleData { Data = "Sample Data" }; db.SampleDatas.InsertOnSubmit(sampleData); // FONTOS, hogyeztmeghívjuk db.SubmitChanges(); }