前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的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. C# Web应用调试开启外部访问

    在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用.这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用. 目录 1. 设置内网访问 2. 设 ...

  2. 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL

    在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...

  3. Gradle配置APK自动签名完整流程

    转载请注明出处:http://www.cnblogs.com/LT5505/p/6256683.html 一.生成签名 1.命令行生成签名,输入命令keytool -genkey -v -keysto ...

  4. 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])

    常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...

  5. HTML 事件(一) 事件的介绍

    本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...

  6. 在 SAE 上部署 ThinkPHP 5.0 RC4

    缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游 ...

  7. SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

    Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...

  8. 漫谈TCP

    不得不承认,tcp是一个非常复杂的协议.它包含了RFC793及之后的一些协议.能把tcp的所有方面面面具到地说清楚,本身就是个很复杂的事情.如果再讲得枯燥,那么就会更让人昏昏欲睡了.本文希望能尽量用稍 ...

  9. MySQL:Fabric 安装

    MySQL Fabric安装 MySQL Fabric是Oracle提供的用于辅助进行ha\sharding的工具,它的基本架构: 从上面看出,借助于Fabric, 可以搭建 HA 集群.Sharin ...

  10. 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》

    ---------------------------------------------------------------------------------------------------- ...