Windows Phone的本地存储——Local Database

廉价感情. 提交于 2020-02-12 06:07:53

本篇我们来了解如何通过local database来实现信息的本地存储。在Windows Phone中使用local database,也就是通过LINQ to SQL来完成对DB的创建及访问。WP中使用LINQ to SQL的过程基本如下所示:

首先定义App所需要的数据结构,在此我们手动创建一个简单的实体数据信息,其中包含一个主键,以及内容等信息。

View Code
 1     [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 Code
1 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 Code
 1 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中存储信息的三种方式(其他两种:IsolatedStorageSettingsIsolatedStorageFile),在实际使用中,可以根据存储一些状态信息、应用数据、系统日志,甚至是关系型数据,可以灵活选取不同的解决方案。

 

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!