1.新建一个MVC框架的ASP.NET Web应用程序项目:
2.打开菜单栏工具下的扩展与更新,找到Npgsql PostgreSQL Interaction插件并安装,这样才能在server explorer中连接到postgresql数据库:
3.使用Nuget程序包管理器控制台安装连接所需要的Nuget包,输入如下代码:
-
install-package npgsql -version 3.2.7 -
install-Package EntityFramework6.Npgsql -Version 3.1.1
安装完后即可在解决方案管理器的引用下看到如下所添加的引用:
4.做完这些准备后,接下来开始连接postgresql,打开菜单栏工具下的“连接到数据库”,选择postgresql,输入所要连接的数据库名,完成数据库连接:
5.接下来创建一个实体数据模型,选择Models文件夹右击添加/新建项,然后选择数据栏里的ADO.NET实体数据模型:
选择来自数据库的EF设计器,进行如下操作:
注:连接设置另存为的文件名同时也是后续连接所要创建的类名
模型建立完成后会在Models文件夹下生成Model1.edmx文件,如下:
6.建立好模型后,我们在建立一个模型的控制器,选择Conteoller文件夹右击添加/控制器,选择空的MVC 5控制器:
7.在Web config 里添加如下代码:
-
<system.data> -
<DbProviderFactories> -
<remove invariant="Npgsql" /> -
<add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" support="FF" /> -
</DbProviderFactories> -
</system.data>
若没有添加则会发生如下错误:
8.在控制器的Index方法里编辑如下代码(以及相应的using语句):
-
using Test.Models; -
using System; -
using System.Collections.Generic; -
using System.Linq; -
using System.Web; -
using System.Web.Mvc; -
namespace Test.Controllers -
{ -
public class TestController : Controller -
{ -
// GET: Test -
public ActionResult Index() -
{ -
Database myDatabase = new Database(); -
//查询 -
var list = from s in myDatabase.student -
select s; -
return View(list); -
} -
} -
}
9.接着添加一个视图来显示我们查询的数据,鼠标点击View()函数右击添加视图:
10.编辑视图,在<div>里添加table,以及添加相应的引用,代码如下:
-
@model IQueryable<Test.Models.student> -
@using Test.Models -
@{ -
Layout = null; -
} -
<!DOCTYPE html> -
<html> -
<head> -
<meta name="viewport" content="width=device-width" /> -
<title>Index</title> -
</head> -
<body> -
<div> -
<table border="1"> -
<tr> -
<th>学号</th> -
<th>姓名</th> -
</tr> -
@foreach (student s in Model) -
{ -
<tr> -
<td>@s.sno</td> -
<td>@s.sname</td> -
</tr> -
} -
</table> -
</div> -
</body> -
</html>
11.最后将默认的控制器改成刚刚我们建立的控制器,编辑App_Start文件夹下的RouteConfig.cs文件,将controlre的参数改成Test(即控制器名),运行即可查看查询结果。
注:若出现依赖错误,可能是因为Nuget包版本问题,只需更新后即可解决
-
routes.MapRoute( -
name: "Default", -
url: "{controller}/{action}/{id}", -
defaults: new { controller = "Test", action = "Index", id = UrlParameter.Optional } -
);
转自: https://blog.csdn.net/danger_z/article/details/80466350