Windows Phone 本地数据库创建、获取数据库物理文件、数据库引用---本地数据库创建
Windows Phone OS 7.1,可以将关系数据存储在驻留在应用程序独立存储容器的本地数据库中。Windows Phone 应用程序使用 LINQ to SQL 执行所有数据库操作;LINQ to SQL 用于定义数据库架构、选择数据,并将更改保存到驻留在独立存储中的基础数据库文件;提到LINQ to SQL,你会不会感到欣喜,It’s amazing在window phone里我们居然可以这样来持久化数据 :),本文将带领大家一同建立第一个windows phone本地数据库应用--联系人管理。
本系列包括以下:
1.数据库创建
2.从独立存储中找到数据库文件并copy到pc上
3.复用2中的数据库(其他程序使用2中的数据库文件或者使用2中初始的数据)
一、数据库实体表创建
1.简介:
windwo phone之前虽然不存在内置数据库的支持功能,但是可以使用一些开源项目,它们模仿传统的数据库行为将数据持久保存到独立存储中;
Windows Phone7 DataBase http://winphone7db.codeplex.com |
项目实现了一个基于独立存储的window phone7数据库。该数据库由表组成,每一个表都支持任意数量的列 |
Wp7 sqliteClient Preview http://sqlitewindowsphone.codeplex.com |
这是sqlite数据库引擎的window phone7实现 |
Perst http://www.mcobject.com/perst |
Perst是来自mcobject公司的一个商业的面向对象数据库系统,它可以再window phone或silverlight应用程序中搞笑的存储和检索数据 |
现在我们来介绍mango支持的独立存储中的本地数据库,而且使用linq to sql来管理和操作数据集
Linq to sql主要是通过数据上下文(DataContext)来映射我们的Model和DB table的结构,在运行时负责桥接对象(Model)和数据(Table)部分之间;数据上下文其实是数据库对象的一种代理,在C#中我们可以简单的通过创建一个Linq to sql数据上下文后,从服务器资源管理器中直接将DB(MS SQL)里的Table、View、Stroreed Procedure、Function直接拖到设计窗口里,当然vs会自动帮我们产生后台Model直接的关系;但是这些操作在mango 里是不支持的,因为数据库物理文件目前微软并没有提供手动创建的方法;
2.数据库创建:
linq to sql中对象关系功能是根据linq to sql中的实体映射详细信息来创建映射到对应数据上下文,所以我们需要先创建数据上下文和实体;
要创建数据上下文和数据库实体关系,需要添加对程序集System.Data.Linq的应用,我们实体model的特性如Table、Column都来自这个程序集
2.0创建数据上下文
首先新建一个类ContactorDataContext,然后让这个类派生自System.Data.Linq.DataContext,并重写构造函数
/// <summary>
/// 数据库上下文
/// </summary>
public class ContactorDataContext : DataContext
{
public ContactorDataContext(string connectionString)
: base(connectionString)
{ }
}
1 <BR><BR>
2.1创建实体model
一个实体model最终会映射为一个数据库表(必须有Table特性),实体的属性最终会映射为对应的列(必须有对应的Column)特性;
实体类图如下:
代码:
View Code
[Table]
public class Contactor : INotifyPropertyChanged, INotifyPropertyChanging
{
/// <summary>
/// Id自动增长
/// </summary>
private int _id;
[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
public int Id
{
get
{
return _id;
}
set
{
if (_id != value)
{
NotifyPropertyChanging("Id");
_id = value;
NotifyPropertyChanged("Id");
}
}
}
/// <summary>
/// 联系人
/// </summary>
private string _contactorName;
[Column]
public string ContactorName
{
get
{
return _contactorName;
}
set
{
if (_contactorName != value)
{
NotifyPropertyChanging("ContactorName");
_contactorName = value;
NotifyPropertyChanged("ContactorName");
}
}
}
/// <summary>
/// 联系电话
///
补充:移动开发 , Windows Phone ,