热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[WP8本地数据库01]班级管理创建数据库

WP8的本地数据库是面向对象型的数据库,所以他的表就是一个实现了System.ComponentModel.INotifyPropertyChanged和System.Compon

WP8的本地数据库是面向对象型的数据库,所以他的表就是一个实现了System.ComponentModel.INotifyPropertyChanged和System.ComponentModelINotifyPropertyChanging接口,并标识System.Data.Linq.Mapping. TableAttribute特性的类

下面是一个班级表

 

1 ///


2 /// 班级表
3 ///

4 [System.Data.Linq.Mapping.Table]
5 public class Class:INotifyPropertyChanged, INotifyPropertyChanging
6 {
7 public event PropertyChangingEventHandler PropertyChanging;
8
9 public event PropertyChangedEventHandler PropertyChanged;
10 }

 

然后给班级表增加“编号”、“学年”、“班主任”,“序号”这几个字段

字段是通过定义标识System.Data.Linq.Mapping. ColumnAttribute的属性作为表的字段,并且要调用PropertyChanging,和PropertyChanged事件

对于Column特性,我要会经常设置的内容:

DbType:获取或设置数据库列的类型。

IsPrimaryKey:获取或设置一个值,该值指示该类成员是否表示作为表的整个主键或部分主键的列。

CanBeNull:获取或设置一个值,该值指示列是否可包含 null 值。

IsDbGenerated:获取或设置一个值,该值指示列是否包含数据库自动生成的值。

比如我要设置一个不自增、不为空的char(5)类型主键:

     

private string _ID;
///


/// 属性的注释
///

[Column(AutoSync=AutoSync.OnInsert, IsDbGenerated=false, CanBeNull=false, DbType="char(5)")]
public string ID
{
get { return this._ID; }
set
{
if (this._ID != value)
{
NotifyPropertyChanging();
this._ID = value;
NotifyPropertyChanged();
}
}
}

更多DbType的相关信息请访问:http://msdn.microsoft.com/zh-cn/library/system.data.linq.mapping.columnattribute.dbtype(v=vs.110).aspx

有关Column的其他内容,请访问http://msdn.microsoft.com/zh-cn/library/system.data.linq.mapping.columnattribute_properties(v=vs.110).aspx

 

一个完整的班级表

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data.Linq.Mapping;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace WP8DBStudy.DB
{
///


/// 班级表
///

[System.Data.Linq.Mapping.Table]
public class Class:INotifyPropertyChanged, INotifyPropertyChanging
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangingEventHandler PropertyChanging;
private void NotifyPropertyChanging([CallerMemberName] String propertyName = "")
{
if (PropertyChanging != null)
{
PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
}
}
private int _OrderBy;
///
/// 序号
///

[Column(IsDbGenerated=true)]
public int OrderBy
{
get { return this._OrderBy; }
set
{
if (this._OrderBy != value)
{
NotifyPropertyChanging();
_OrderBy = value;
NotifyPropertyChanged();
}
}
}
private string _ID;
///
/// 属性的注释
///

[Column(AutoSync=AutoSync.OnInsert, IsDbGenerated=false, CanBeNull=false, DbType="NCHAR(5)")]
public string ID
{
get { return this._ID; }
set
{
if (this._ID != value)
{
NotifyPropertyChanging();
this._ID = value;
NotifyPropertyChanged();
}
}
}
private string _Grade;
///
/// 学年
///

[Column]
public string Grade
{
get { return this._Grade; }
set
{
if (this._Grade != value)
{
NotifyPropertyChanging();
this._Grade = value;
NotifyPropertyChanged();
}
}
}
private string _HeadTeacher;
///
/// 班主任
///

[Column]
public string HeadTeacher
{
get { return this._HeadTeacher; }
set
{
if (this._HeadTeacher != value)
{
NotifyPropertyChanging();
this._HeadTeacher = value;
NotifyPropertyChanged();
}
}
}
}
}

创建了表类,我们还没能直接使用,在WP8中是通过DataContext类的子类来作为一个代理类操作数据库的

public class DBContext : DataContext
{
public const string CONNET_STR = "Data Source=‘isostore:/db.sdf‘;Password=‘111111‘";
public DBContext()
: base(CONNET_STR)
{
}
public Table ClassTable;
}
类型为Table 的公开字段就是表对象,字段名和类型名一样(不一样需要另外配置,暂不说)

数据库的链接字符串格式是:

Data Source=‘isostore:/<文件名>‘;Password=‘<密码>‘

 在App.xaml.cs文件的构造函数中使用如下代码创建数据库

using (DB.DBContext db = new DB.DBContext())
{
//不存在数据库的时候才创建新数据库,注意,如果修改了数据库的话,需要删除重新创建数据库
if (db.DatabaseExists() == false)
{
db.CreateDatabase();
}
}

下班了,今天就写创建数据库好了,接下来还有操作数据库,要注意的事项和高级应用(比如表间关系的设置),最终会完成一个辅助管理班级的app。


推荐阅读
author-avatar
手机用户2502917943
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有