代码改变世界

WindowsPhone 8 开发 之 本地数据库应用

2013-07-07 12:22  Shawn.Cheng  阅读(353)  评论(0编辑  收藏  举报

微软提供的有一个本地数据库的例子 http://code.msdn.microsoft.com/wpapps/Local-Database-Sample-57b1614c

可以进行参照。

里边最核心的就是DataContext

首先构造实体类

1  [Table]
2     public class Student
3     {
4         [Column]
5         public string Name { get; set; }
6     }

注意实体上要添加Table Attribute 以表明该实体映射到数据库的一个表上。

然后构造DataContext

 1     public class MyDbContext:DataContext
 2     {
 3 
 4         public MyDbContext(string connstr):base(connstr)
 5         {
 6  
 7         }
 8 
 9         //注意这里是字段,而不是属性
10         public Table<Student> Students;
11         
12     }

这里边一定要注意的是 Students是一个字段,而不是属性,如果写成了属性,属性值会为null,具体为什么这么写,不太清楚。web上用惯了EF 这个地方是属性,导致我这个地方最开始写成了属性,一直报错,找了好久,才发现是这个地方的问题。

然后就是操作数据库的代码,使用的是Linq。

 

 1         string constr = "Data Source=isostore:/mydb.sdf";
 2 
 3         private void InitData()
 4         {
 5             initAppConext();
 6 
 7             using (MyDbContext db=new MyDbContext(constr))
 8             {
 9                 students = db.Students.ToList();
10             }   
11         }
12 
13         private void initAppConext()
14         {
15             using (MyDbContext db = new MyDbContext(constr))
16             {
17                 if (db.DatabaseExists() == false)
18                 {
19                     db.CreateDatabase();
20                     db.Students.InsertOnSubmit(new Student { Name = "cjt" });
21                     db.Students.InsertOnSubmit(new Student { Name = "cjt2" });
22                     db.Students.InsertOnSubmit(new Student { Name = "cjt3" });
23                     db.Students.InsertOnSubmit(new Student { Name = "cjt4" });
24 
25                     db.SubmitChanges();
26                 }
27             }
28 
29         }

注意同EF一样,有个提交SubmitChanges().

至于显示,就是写上一个listbox,绑定ItemSource 属性即可。

 

另外,关于数据绑定有一些知识,会要求实体类实现INotifyPropertyChanged, INotifyPropertyChanging 两个接口。这里我们不讨论这个知识点,只对单纯的最简单的数据库操作进行说明。

其实,目前我还没有太明白数据绑定那一块。