转载

让我们一起用开源数据库和开源框架废弃Access

一、为什么要废弃Access?

1.客户的机子上需要安装access的驱动

ps:这个比较烦人,大家都知道部署越简单越好,安装这个对用户来说太繁琐了.

2.操作时性能不佳

ps:用过access的人们都知道,这个东西数据量大的时候查询起来很费时间.

3.没有事务支持

实际项目中很多操作需要原事务支持的,至于事务的存在大家应该都懂,access咱们就不说它多坏了

4.平台支持问题

如果我们把我们的项目部署在linux上,这个时候估计就歇菜了.

二、怎么用开源的东西废弃Access

1.这里我们推荐使用sqlite,至于sqlite是什么大家应该比较清楚,

简单而言:类似access,本地型文件数据库,支持事务,标准sql,性能在开源本地文件数据库中挺好.支持其他操作系统.

2.数据库的操作用什么框架呢?

这里就毛遂自荐,推荐使用moon.orm标准版.

源代码下载地址: http://pan.baidu.com/s/1i3xj0f7

三、用实际例子来看看sqlite

1.使用sqlite的管理工具.(推荐sqliteExpert)

让我们一起用开源数据库和开源框架废弃Access

2.建立如下库表

三张表:班级、 学生、分数

CREATE TABLE [Student] (   [ID] INTEGER NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK,    [Name] VARCHAR(50) NOT NULL,    [Age] INT NOT NULL,    [BirthDay] DATETIME NOT NULL,    [Sex] BOOLEAN NOT NULL,    [Class_ID] INTEGER NOT NULL REFERENCES [Class]([ID]));  CREATE TABLE [Class] (   [ID] INTEGER NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK,    [ClassName] VARCHAR(50) NOT NULL,    [ClassLevel] INT NOT NULL);  CREATE TABLE [Score] (   [ID] INTEGER NOT NULL PRIMARY KEY ON CONFLICT ROLLBACK,    [Score] INT NOT NULL,    [Student_ID] INTEGER NOT NULL REFERENCES [Student]([ID]));

3.使用代码生成器

让我们一起用开源数据库和开源框架废弃Access

最新版本下载地址: http://lko2o.com/moon/article/9

4.配置数据库连接

让我们一起用开源数据库和开源框架废弃Access

5.生成实体层代码

让我们一起用开源数据库和开源框架废弃Access

6.将生成的实体代码放入您的开发项目中

让我们一起用开源数据库和开源框架废弃Access

让我们一起用开源数据库和开源框架废弃Access

7.配置您的项目

让我们一起用开源数据库和开源框架废弃Access

8.开始编码

using System; using Moon_Sqlite; using Moon.Orm; using Moon.Orm.Util; namespace testsome {     class Program     {         public static void Main(string[] args)         {             //添加数据             using (var db=Db.CreateDefaultDb()) {                 //开启事务功能                 db.TransactionEnabled=true;                                                    /*清空数据表                 db.Remove<ScoreSet>();                 db.Remove<StudentSet>();                 db.Remove<ClassSet>();                  */                 //添加数据                 Class cl=new Class();                 cl.ClassName="班级"+DateTime.Now.ToString();                 cl.ClassLevel=1;                 db.Add(cl);                 Console.WriteLine("添加[班级]成功,ID={0}",cl.ID);                                  Student stu=new Student();                 stu.Age=12;                 stu.BirthDay=DateTime.Now;                 stu.Class_ID=cl.ID;                 stu.Name="张三"+DateTime.Now;                 stu.Sex=true;                 db.Add(stu);                 Console.WriteLine("添加[学生]成功,ID={0}",stu.ID);                                  Score sco=new Score();                 sco.Score_=98;                 sco.Student_ID=stu.ID;                 db.Add(sco);                 Console.WriteLine("添加[分数]成功,ID={0}",stu.ID);                                  //跟新数据                 Score update=new Score();                 update.Score_=100;                 update.WhereExpression=ScoreSet.ID.Equal(sco.ID);                 db.Update(update);             }             //查询数据             using (var db=Db.CreateDefaultDb()) {                 //连接查询                 var mqlJoin=ScoreSet.SelectAll()                     .InnerJoin(StudentSet.Select(StudentSet.Name))                     .InnerJoin(ClassSet.Select(ClassSet.ID.AS("ClassID"),ClassSet.ClassName))                     .ON(ScoreSet.Student_ID.Equal(StudentSet.ID)                         .And(StudentSet.Class_ID.Equal(ClassSet.ID) )                        );                 //查看当前sql                 var sql=mqlJoin.ToDebugSQL();                 var list=db.GetDictionaryList(mqlJoin);                 //展示数据                 list.ShowInConsole();                                  //让我们无需实体类                 string sql2=mqlJoin.ToParametersSQL();                 dynamic dlist=db.GetDynamicList(sql2,"自定义类名");                 foreach (dynamic entity in dlist) {                     Console.WriteLine(entity.ID+" "+entity.Score+" "+entity.Student_ID+" "+entity.Name+" "+entity.ClassID+" "+entity.ClassName);                 }                 //获取实体集                 var entityList=db.GetEntities<Score>(ScoreSet.SelectAll().Where(ScoreSet.ID.BiggerThan(0)));                                               }             Console.Write("Press any key to continue . . . ");             Console.ReadKey(true);         }     } }

让我们一起用开源数据库和开源框架废弃Access

该项目源代码下载

地址: http://pan.baidu.com/s/1vyyPg

此项目开源直接运行

正文到此结束
Loading...