ASP.NET MVC 使用 Petapoco 微型ORM架構+NpgSql驅動串連 PostgreSQL資料庫

來源:互聯網
上載者:User

標籤:

原文:ASP.NET MVC 使用 Petapoco 微型ORM架構+NpgSql驅動串連 PostgreSQL資料庫

前段時間在園子裡看到了小蝶驚鴻 發布的有關綠色版的Linux.NET——“Jws.Mono”。由於我對.Net程式跑在Linux上非常感興趣,自己也看了一些有關mono的資料,但是一直沒有時間抽出時間來研究這個,小蝶驚鴻的部落格又激起了我的興趣,我花了四天的時間,終於在Liunx上跑起了屬於我自己的應用程式,其中資料庫使用到了PostgreSQL資料庫。對於資料庫的選用,是在小蝶驚鴻 部落格Linux.NET學習手記(4)中,使用了這個資料庫。

今天,我只是單純講解使用ASP.NET MVC  + 微型orm架構 Petapoco  串連PostgreSQL資料庫。C#操作PostgreSQL資料庫很多人應該很瞭解,只需要使用NpgSql驅動即可。有關NpgSql的使用大家可以參考張善友老師的部落格PostgreSQL的.NET驅動程式Npgsql。關於PetaPoco的介紹和使用方法,各位讀者可以參考:PetaPoco官網、.NET對象關係映射器PetaPoco、OoC‘s Blog、PetaPoco入門(二)、PetaPoco入門(一)、小巧方便的ORM類庫——PetaPoco(這是我在網上找了很長時間的資料啊),它們都有比較清晰而詳細的介紹PetaPoco如何使用。

由於是第一次使用PostgreSQL資料庫,我在使用的過程中遇到了許多問題,有些問題沒有,我只把有的一個問題給大家貼出來,然後再給大家詳解My Code。

這個問題很簡單,就是沒有找到NpgSql驅動,但是我已經把驅動程式載入到解決方案中了,為什麼還會出現這個問題呢,我在google上找了很多資料,包括Petapoco 的源碼和單元測試,都沒有找到解決方案。後來在一個國外的交流網站上找到瞭解決方案,因為mvc應用程式需要自己手動設定webconfig檔案中的驅動程式,所以我在設定檔中加了如下的配置:

<system.data>    <DbProviderFactories>      <add name="Npgsql Data Provider"           invariant="Npgsql"           support="FF"           description=".Net Framework Data Provider for Postgresql Server"           type="Npgsql.NpgsqlFactory, Npgsql" />    </DbProviderFactories>  </system.data>

這樣問題就輕鬆的解決了。看:(樣本地址:http://www.cnicode.com/)

下面,我們來看一下代碼實現:

1. 在看代碼前,我們需要將NpgSql和Petapoco 載入到當前項目中來,我將使用Nuget來添加到當前項目,分別如下:

Install-Package Npgsql
Install-Package PetaPoco

2.下面看一下Web.config中的重要代碼

1>資料庫連接字串

<connectionStrings>    <add name ="Postgresql" connectionString="Server=127.0.0.1;User id=postgres;password=123;Database=mono_test;" providerName="Npgsql"/>  </connectionStrings>

2>NpgSql驅動設定檔

<!--provider驅動的設定檔-->  <system.data>    <DbProviderFactories>      <add name="Npgsql Data Provider"           invariant="Npgsql"           support="FF"           description=".Net Framework Data Provider for Postgresql Server"           type="Npgsql.NpgsqlFactory, Npgsql" />    </DbProviderFactories>  </system.data>

3.看一下整體的項目結構

  4.UserInfo.cs實體類中的代碼

namespace PetaPoco{    [TableName("userinfo")]    [PrimaryKey("id")]    [ExplicitColumns]    public class UserInfo    {        [Column("id")]        public int Id { get; set; }        [Column("name")]        public string Name { get; set; }        [Column("age")]        public int Age { get; set; }        [Column("qq")]        public int Qq { get; set; }    }}

5.Controllers中的代碼

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using PetaPoco;namespace PostgreSqlDemo.Controllers{    public class HomeController : Controller    {        //        // GET: /Home/        Database db = new PetaPoco.Database("Postgresql");        public ActionResult Index()        {            ViewData.Model = db.Query<UserInfo>("select * from userinfo");            return View();        }        //        // GET: /Home/Details/5        public ActionResult Details(int id)        {            ViewData.Model = db.SingleOrDefault<UserInfo>("select * from userinfo where [email protected]", id);            return View();        }        //        // GET: /Home/Create        public ActionResult Create()        {            return View();        }        //        // POST: /Home/Create        [HttpPost]        public ActionResult Create(UserInfo user)        {            try            {                db.Insert(user);                return RedirectToAction("Index");            }            catch            {                return View();            }        }        //        // GET: /Home/Edit/5        public ActionResult Edit(int id)        {            ViewData.Model = db.SingleOrDefault<UserInfo>("where [email protected]", id);            return View();        }        //        // POST: /Home/Edit/5        [HttpPost]        public ActionResult Edit(UserInfo user)        {            try            {                db.Update(user);                return RedirectToAction("Index");            }            catch            {                return View();            }        }        //        // GET: /Home/Delete/5        public ActionResult Delete(int id)        {            ViewData.Model = db.SingleOrDefault<UserInfo>("where [email protected]",id);            return View();        }        //        // POST: /Home/Delete/5        [HttpPost]        public ActionResult Delete(UserInfo user)        {            try            {                db.Delete(user);                return RedirectToAction("Index");            }            catch            {                return View();            }        }    }}

6.view中的代碼,會使用asp.net mvc 就能寫出,這裡就不貼出代碼了。

ASP.NET MVC 使用 Petapoco 微型ORM架構+NpgSql驅動串連 PostgreSQL資料庫就基本結束了,後面我會錄製一個和這篇博文對應的視頻教程,源碼和視頻教程會在稍後的博文中發布。

最後感謝張善友老師和小蝶驚鴻的部落格,尤其感謝小蝶驚鴻在QQ上給我的協助。

郝喜路    2014年5月15日16:47:44

部落格地址:http://www.cnblogs.com/haoxilu/

ASP.NET MVC 使用 Petapoco 微型ORM架構+NpgSql驅動串連 PostgreSQL資料庫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.