foreach (var item in contactData)
{
App.Database.Save(item);
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (null != handler)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
{
App.Database.Save(item);
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (null != handler)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
很容易看出,上面代码的关键在于方法LoadData。在这个方法中,我们首先判断这两个表GroupViewModel和ContactViewModel是否已建立。如果已经建立,我们只需要用简单的Sterling查询操作填充两个集合;否则,我们调用另一个方法_SetupData生成新表中的记录。创建记录简单地对应于创建相关类的实例。最后,我们设置全局变量IsDataLoaded的值以方便随后的判断之用。
到目前为止,所有数据层相关编程已经完成。接下来,我们将介绍如何把Sterling集成到Windows Phone7应用程序中。
二、把Sterling集成到WP7项目中
现在,我们已经定义了一个Sterling数据库、两个表及相应的索引。那么,接下来我们来分析如何把Sterling数据库集成到我们的示例应用程序WP7SterlingLearning中。请注意,WP7SterlingLearning仅是一个普通的Windows Phone7应用程序,没有什么特别之处。从总体上看,关键的问题主要发生在文件App.xaml.cs中。
1.添加所需的组件
若要使用Sterling数据库,首先要添加使用Sterling引擎所需的组件。下面给出关键代码部分:
列表2:添加使用Sterling引擎所需的组件的关键代码
//省略其他引用…
using Wintellect.Sterling;
using WP7SterlingLearning.Database;
namespace WP7SterlingLearning
{
public partial class App : Application
{
private static MainViewModel viewModel = null;
private static ISterlingDatabaseInstance _database = null;
private static SterlingEngine _engine = null;
private static SterlingDefaultLogger _logger = null;
//The MainViewModel object
public static MainViewModel ViewModel
{
get
using Wintellect.Sterling;
using WP7SterlingLearning.Database;
namespace WP7SterlingLearning
{
public partial class App : Application
{
private static MainViewModel viewModel = null;
private static ISterlingDatabaseInstance _database = null;
private static SterlingEngine _engine = null;
private static SterlingDefaultLogger _logger = null;
//The MainViewModel object
public static MainViewModel ViewModel
{
get