前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的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对象关系映射器PetaPocoOoC's BlogPetaPoco入门(二)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. 谈一下关于CQRS架构如何实现高性能

    CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...

  2. CSS 选择器及各样式引用方式

    Css :层叠样式表 (Cascading Style Sheets),定义了如何显示HTML元素. 目录 1. 选择器的分类:介绍ID.class.元素名称.符合.层次.伪类.属性选择器. 2. 样 ...

  3. 【原】AFNetworking源码阅读(六)

    [原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...

  4. java统计字符串单词的个数

    在一些项目中可能需要对一段字符串中的单词进行统计,我在这里写了一个简单的demo,有需要的同学可以拿去看一下. 本人没怎么写个播客,如果有啥说的不对的地方,你来打我啊 不说废话了直接贴代码: 实现代码 ...

  5. ADFS3.0与SharePoint2013安装配置(原创)

    现在越来越多的企业使用ADFS作为单点登录,我希望今天的内容能帮助大家了解如何配置ADFS和SharePoint 2013.安装配置SharePoint2013这块就不做具体描述了,今天主要讲一下怎么 ...

  6. 多本地代码工作点更新到2个远端GIT仓库

    摘要:本文介绍了笔者多个本地工作节点(地方)的多台电脑(PC/笔记本电脑)同步源码到2个远端的GIT(一个GITHUB国外强制公开,一个oschina国内可不公开). 作者:太初 转载说明:请指明原作 ...

  7. linux中kvm的安装及快照管理

    一.kvm的安装及状态查看 1.安装软件 yum -y install kvm virt-manager libvirt2.启动libvirtd 报错,升级device-mapper-libs yum ...

  8. Markdown学习笔记

    分为两步: 1.阅读Markdown中文官网的文档 2.下载MarkdownPad2将中文官网中文档的例子敲一遍,其中Markdownpad2为官网中推荐的编辑器 备注: 如果只看中文官网文档,不边看 ...

  9. [转载]Java 8 日期&时间 API

    Java 8 日期和时间 声明 本文转自http://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant,以mark ...

  10. 从Unity3D编译器升级聊起Mono

    接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识. Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的M ...