PetaPoco輕量級ORM框架 - 入門安裝

PetaPoco 是一個開源輕量級ORM,夠小,夠快,單文件

  在GitHub上有很高的人氣 1377星,幾年來做者一直在更新html

  當前版本6.0.317 - Netstandard 2.0(同時支持.net core、.net framework4.0+),也可下載單獨的平臺版本git

  github: https://github.com/CollaboratingPlatypus/PetaPocogithub

  • 像Dapper 夠快是由於使用dynamic生成分配列值和屬性
  • 像Massive 只有一個文件,很容易添加到任何項目的編譯
  • 像Massive  支持dynamic Expandos
  • 不像Massive 不使用強類型POCO's
  • 像ActiveRecord 支持對象和數據庫表之間的關係
  • 像SubSonic 支持使用T4模板生成poco類

功能特色

  • 夠小,徹底沒有任何依賴
  • 配置簡單
  • 包含Insert/Delete/Update/Save and IsNew方法助手
  • 根據請求自動分頁,能夠指定輸出記錄總數和指定頁碼
  • 支持事務
  • 更好的參數替換支持,抓取對象屬性做爲命名參數
  • 優秀的性能,經過去除Linq使用Dynamic方法進行屬性賦值
  • 使得編寫內聯SQL SQL builder類更加容易
  • 包含T4模板,能夠快速生成Model類
  • 方便擴展異常日誌
  • 支持SQL Server, SQL Server CE, MS Access, SQLite, MySQL, MariaDB, Firebird, PostgreSQL (支持Oracle但沒有作集成測試).
  • 支持Net Standard 2.0, .NET 4.0/4.5+ or Mono 2.8 及以上
  • 有Xunit單元測試
  • 有各類數據庫的集成測試
  • 開源

 1.添加Nugit引用,搜索(PetaPoco)數據庫

    

  此處下載的是第一個,會建立如下內容,所說的單文件就是隻有PetaPoco.cs一個文件,項目中也可只保留此文件;Generated文件夾存放的是T4模板,用於生成實體類,如不須要能夠刪除app

  

2.配置數據庫鏈接,根據T4模板生成Model類,如不須要則可省略此步ide

<add name="SqlServer" connectionString="Data Source=.;uid=sa;pwd=we;database=JD;" providerName="System.Data.SqlClient"/>

    

    

3.保存後,會生成Database.cs文件內容以下:性能

    

4.若是數據庫表有新增或修改字段,執行如下操做後,會自動生成相應的實體類。單元測試

    

 

 3.實操:測試

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PetaPocoDemo
{
    class Program
    {
        static void Main(string[] args)
        { 
            Person p1 = Db.Record<Person>.SingleOrDefault(1);   //查詢ID=1的記錄
            Db.Record<Person>.Delete(2);                        //刪除ID=2的記錄


            Person person = new Person { Name = "曹操", Sex = "", Age = 500 };
            var db = Db.GetInstance();

            db.Execute("truncate table person");

            //保存一個實體
            db.Save(person);
            db.Save(new Person { Name = "孫悟空" });
            db.Save(new Person { Name = "孫悟空" });
            db.Save("Person", "ID", new { Name = "張每天", ID = 3 }); //save根據主鍵決定是新增仍是修改

            //查詢一個實體
            person = db.Single<Person>(1);
            person = db.Single<Person>("where id=2");

            //刪除一個實體
            db.Delete(person);
            db.Delete<Person>(1);
            db.Delete<Person>("where name='張每天'");

        }
    }
}
CREATE TABLE [dbo].[Person](
    [ID] [INT] IDENTITY(1,1) NOT NULL,
    [Name] [VARCHAR](50) NULL,
    [Sex] [VARCHAR](50) NULL,
    [Age] [INT] NULL,
    [AddTime] [DATETIME] NULL,
 CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
相關文章
相關標籤/搜索