1. 程式人生 > >讓我們一起用開源資料庫和開源框架廢棄Access

讓我們一起用開源資料庫和開源框架廢棄Access

一、為什麼要廢棄Access?

1.客戶的機子上需要安裝access的驅動

ps:這個比較煩人,大家都知道部署越簡單越好,安裝這個對使用者來說太繁瑣了.

2.操作時效能不佳

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.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); } } }

ps:用過access的人們都知道,這個東西資料量大的時候查詢起來很費時間.

3.沒有事務支援

實際專案中很多操作需要原事務支援的,至於事務的存在大家應該都懂,access咱們就不說它多壞了

4.平臺支援問題

如果我們把我們的專案部署在linux上,這個時候估計就歇菜了.

二、怎麼用開源的東西廢棄Access

1.這裡我們推薦使用sqlite,至於sqlite是什麼大家應該比較清楚,

簡單而言:類似access,本地型檔案資料庫,支援事務,標準sql,效能在開源本地檔案資料庫中挺好.支援其他作業系統.

2.資料庫的操作用什麼框架呢?

這裡就毛遂自薦,推薦使用moon.orm標準版.

 (關於原始碼解壓請郵件 [email protected])

三、用實際例子來看看sqlite

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

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.使用程式碼生成器

4.配置資料庫連線

5.生成實體層程式碼

6.將生成的實體程式碼放入您的開發專案中

7.配置您的專案

8.開始編碼

該專案原始碼下載

此專案開源直接執行