前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的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数据库,我在使用的过程中遇到了许多问题,有些问题没有截图,我只把有截图的一个问题给大家贴出来,然后再给大家详解我的代码。

这个问题很简单,就是没有找到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 id=@0", 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 id=@0", 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 id=@0",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数据库的更多相关文章

  1. 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库

    说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...

  2. ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  3. ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  4. ASP.NET MVC搭建项目后台UI框架—1、后台主框架

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  5. ASP.NET MVC搭建项目后台UI框架—11、自动加载下拉框查询

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 需求:在查询记录的时候,输入第一个字,就自动把以这个字开头的相关记录查找出来,输入2个字就过滤以这两个子开头的记录,依次类推. 突然要用到这 ...

  6. ASP.NET MVC搭建项目后台UI框架—2、菜单特效

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  7. ASP.NET MVC搭建项目后台UI框架—3、面板折叠和展开

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  8. ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  9. ASP.NET MVC搭建项目后台UI框架—7、统计报表

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET M ...

随机推荐

  1. H5程序员如何利用cordova开发跨平台应用

    什么是Cordova? Cordova以前也叫PhoneGap,它提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还 ...

  2. Javascript实现HashTable类

    散列算法可以尽快在数据结构中找出指定的一个值,因为可以通过Hash算法求出值的所在位置,存储和插入的时候都按照Hash算法放到指定位置. <script> function HashTab ...

  3. ZKWeb网页框架1.3正式发布

    本次更新的内容有 更新引用包版本 Microsoft.AspNetCore.Hosting.Abstractions 1.1.0 Microsoft.AspNetCore.Http.Abstracti ...

  4. JavaScript 常量定义

    相信同学们在看见这个标题的时候就一脸懵逼了,什么?JS能常量定义?别逗我好吗?确切的说,JS当中确实没有常量(ES6中好像有了常量定义的关键字),但是深入一下我们可以发现JS很多不为人知的性质,好好利 ...

  5. cesium核心类Viewer简介

    1.简单描述Viewer Viewer类是cesium的核心类,是地图可视化展示的主窗口,cesium程序应用的切入口,扮演必不可少的核心角色. 官网的英文解析如下: A base widget fo ...

  6. Angular2 Hello World 之 2.0.0-beta.14

    公司现在采用angualrjs开发一些web应用,采用的是angular1,现在angular2已经差不多了,听说最近rc6已经出来了……其实感觉好慢啊!之前也做过一些anglar2的例子,但是没有记 ...

  7. Android 开发一定要看的15个实战项目

    前言: 虽说网上有太多的Android课程,但是大多都是视频,有Android在线开发环境的几乎没有,但是对于学习Android的人来说拥有在线的Android开发环境是非常好的,可以随时动手操作学习 ...

  8. 一键生成APP官网

    只需要输入苹果下载地址,安卓市场下载地址,或者内测下载地址,就能一键生成APP的官网,方便在网上推广. 好推APP官网 www.hotapp.cn/app

  9. 项目游戏开发日记 No.0x00000

    14软二杨近星(2014551622) ---恢复内容开始--- 2016-03-17 从开始迈进软件工程专业, 已经快两年了, 记得当初选择软件的理由是, 我要学去做东西, 我享受开发过程. 两年来 ...

  10. Photoshop、Illustrator思维导图笔记

    半年前学习Photoshop时记得的思维导图笔记,可能不是很全,常用的基本都记下了.