欢迎投稿

今日深度:

微软WP7本地数据库之Sterling编程技巧(1)

微软WP7本地数据库之Sterling编程技巧(1)


Sterling是一款开源的嵌入式数据库软件。在本篇中,我们将分析如何把Sterling数据库集成到Windows Phone 7程序中及相应的编程技巧和注意事项。

一、创建MainViewModel

为了实现更加模块化的设计,我们将创建一个视图模型,用以封装上篇中定义的两个数据库表格。为简单起见,我们主要提供了数据加载方面的支持。使用MainViewModel的另一个原因是下载的示例程序中正是使用了这种系统架构方式。然而,请注意这个例子中并没有利用流行的MVVM设计模式。

列表1:定义主视图模型实现与Sterling数据库层的关联

  1. public class MainViewModel : INotifyPropertyChanged  
  2. {  
  3.    public MainViewModel()  
  4.    {  
  5.       this.Groups = new ObservableCollection();  
  6.       this.Contacts = new ObservableCollection();  
  7.    }  
  8.    public ObservableCollection Groups { getprivate set; }  
  9.    public ObservableCollection Contacts { getprivate set; }  
  10.    public bool IsDataLoaded  
  11.    {  
  12.       get;  
  13.       private set;  
  14.    }  
  15.    public void LoadData()  
  16.    {  
  17.       bool hasKeys = false;  
  18.       foreach (var item in App.Database.Query())  
  19.       {   
  20.          hasKeys = true;  
  21.          break;  
  22.       }  
  23.       bool hasKeys2 = false;  
  24.       foreach (var item in App.Database.Query())  
  25.       {  
  26.          hasKeys2 = true;  
  27.          break;  
  28.       }  
  29.       if (!hasKeys && !hasKeys2)  
  30.       {  
  31.          _SetupData();  
  32.       }  
  33.       foreach (var item in App.Database.Query())  
  34.       {  
  35.          Groups.Add(item.LazyValue.Value);  
  36.       }  
  37.       foreach (var item in App.Database.Query())  
  38.       {  
  39.          Contacts.Add(item.LazyValue.Value);  
  40.       }  
  41.       this.IsDataLoaded = true;  
  42.    }  
  43.    private void _SetupData()  
  44.    {  
  45.       var groupData = new List()  
  46.       {  
  47.          new GroupViewModel() { GroupName = "GP1"},  
  48.          //others omitted…  
  49.          new GroupViewModel() { GroupName = "GP10"}  
  50.       };  
  51.       foreach (var item in groupData)  
  52.       {  
  53.          App.Database.Save(item);  
  54.       }  
  55.       var contactData = new List()  
  56.       {  
  57.          new ContactViewModel() { GroupId=1,Name="Name11",Email="Name11@hotmail.com",ThumbNail="/WP7SterlingLearning;Component/ThumbNails/11.jpg"},  
  58.          new ContactViewModel() { GroupId=1,Name="Name12",Email="Name12@hotmail.com",ThumbNail="/WP7SterlingLearning;Component/ThumbNails/12.jpg"},  
  59.          //others omitted…  
  60.          new ContactViewModel() { GroupId=10,Name="Name105",Email="Name105@hotmail.com",ThumbNail="/WP7SterlingLearning;Component/ThumbNails/105.jpg"}  
  61.       };  
  62.       foreach (var item in contactData)  
  63.       {  
  64.          App.Database.Save(item);  
  65.       }  
  66.    }  
  67.    public event PropertyChangedEventHandler PropertyChanged;  
  68.    private void NotifyPropertyChanged(String propertyName)  
  69.    {  
  70.       PropertyChangedEventHandler handler = PropertyChanged;  
  71.       if (null != handler)  
  72.       {  
  73.          handler(thisnew PropertyChangedEventArgs(propertyName));  
  74.       }  
  75.    }  

很容易看出,上面代码的关键在于方法LoadData。在这个方法中,我们首先判断这两个表GroupViewModel和ContactViewModel是否已建立。如果已经建立,我们只需要用简单的Sterling查询操作填充两个集合;否则,我们调用另一个方法_SetupData生成新表中的记录。创建记录简单地对应于创建相关类的实例。最后,我们设置全局变量IsDataLoaded的值以方便随后的判断之用。

到目前为止,所有数据层相关编程已经完成。接下来,我们将介绍如何把Sterling集成到Windows Phone7应用程序中。


www.htsjk.Com true http://www.htsjk.com/shujukukf/17024.html NewsArticle 微软WP7本地数据库之Sterling编程技巧(1) Sterling是一款开源的嵌入式数据库软件。在本篇中,我们将分析如何把Sterling数据库集成到Windows Phone 7程序中及相应的编程技巧和注意事项。 一、...
评论暂时关闭