本篇我们来了解如何通过local database来实现信息的本地存储。在Windows Phone中使用local database,也就是通过LINQ to SQL来完成对DB的创建及访问。WP中使用LINQ to SQL的过程基本如下所示:
首先定义App所需要的数据结构,在此我们手动创建一个简单的实体数据信息,其中包含一个主键,以及内容等信息。
View Code1 [Table] 2 public class Memo : INotifyPropertyChanging,INotifyPropertyChanged 3 { 4 [Column(IsVersion = true)] 5 private Binary _version; 6 7 private int memoId; 8 [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)] 9 public int MemoId10 {11 get { return memoId; }12 set13 {14 if (memoId != value)15 {16 NotifyPropertyChanging("MemoId");17 memoId = value;18 NotifyPropertyChanged("MemoId");19 }20 }21 }22 23 private string subject;24 [Column]25 public string Subject26 {27 get { return subject; }28 set29 {30 if (subject != value)31 {32 NotifyPropertyChanging("Subject");33 subject = value;34 NotifyPropertyChanged("Subject");35 }36 }37 }38 39 private string content;40 [Column]41 public string Content42 {43 get { return content; }44 set45 {46 if (content != value)47 {48 NotifyPropertyChanging("Content");49 content = value;50 NotifyPropertyChanged("Content");51 }52 }53 }54 55 public event PropertyChangingEventHandler PropertyChanging;56 private void NotifyPropertyChanging(string propertyName)57 {58 if (PropertyChanging != null)59 {60 PropertyChanging(this, new PropertyChangingEventArgs(propertyName));61 }62 }63 64 public event PropertyChangedEventHandler PropertyChanged;65 private void NotifyPropertyChanged(string propertyName)66 {67 if (PropertyChanged != null)68 {69 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));70 }71 }72 }
然后创建我们的Data Context。
View Code1 public class MemoDataContext : DataContext2 {3 public MemoDataContext(string connectionString)4 : base(connectionString)5 { }6 7 public Table<Memo> Memos;8 }
在WP中使用linq2sql跟桌面版不同的是,在桌面版中,我们也许一般都是通过CS或者BS模式来获取Server端的数据,但是在WP中,我们能获取的只是当前App可访问在isolated storage中存储的DB,所以不但要在App运行时可以操作数据,而且还需要负责DB的创建,甚至因为需要对DB的结构进行修改的工作。本篇中我们仅仅演示如何创建DB,修改DB的方法可以参考微软的官方文档。一般我们可以在App初始化的时候,进行DB的创建或者修改:
View Code1 private void InitDB() 2 { 3 string DBConnectionString = "Data Source=isostore:/Memo.sdf"; 4 5 using (MemoDataContext db = new MemoDataContext(DBConnectionString)) 6 { 7 //Create DB 8 if (db.DatabaseExists() == false) 9 {10 db.CreateDatabase();11 }12 }13 }
DB创建后,我们就可以利用linq2sql的相关方法来完成数据的CRUD,其实在WP中操作local database的时候,除了需要创建DB或者对其结构进行修改,需要我们自己写代码处理之外,其余过程是基本一致的(点击这里可以了解在WP中使用linq2sql的一些限制信息)
至此我们已经了解了在WP中在isolated storage中存储信息的三种方式(其他两种:IsolatedStorageSettings,IsolatedStorageFile),在实际使用中,可以根据存储一些状态信息、应用数据、系统日志,甚至是关系型数据,可以灵活选取不同的解决方案。
来源:https://www.cnblogs.com/florcava/archive/2011/09/09/2171993.html