EntityFramework6(EF6)连接Postgresql数据库(转)

1.新建一个MVC框架的ASP.NET Web应用程序项目:

 

2.打开菜单栏工具下的扩展与更新,找到Npgsql PostgreSQL Interaction插件并安装,这样才能在server explorer中连接到postgresql数据库:

 

3.使用Nuget程序包管理器控制台安装连接所需要的Nuget包,输入如下代码:

 
  1. install-package npgsql -version 3.2.7

  2. 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 里添加如下代码:

 
  1. <system.data>

  2. <DbProviderFactories>

  3. <remove invariant="Npgsql" />

  4. <add name="Npgsql Data Provider" invariant="Npgsql" description=".Net Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" support="FF" />

  5. </DbProviderFactories>

  6. </system.data>

若没有添加则会发生如下错误:

 

8.在控制器的Index方法里编辑如下代码(以及相应的using语句):

 
  1. using Test.Models;

  2. using System;

  3. using System.Collections.Generic;

  4. using System.Linq;

  5. using System.Web;

  6. using System.Web.Mvc;

  7.  
  8. namespace Test.Controllers

  9. {

  10. public class TestController : Controller

  11. {

  12. // GET: Test

  13. public ActionResult Index()

  14. {

  15. Database myDatabase = new Database();

  16. //查询

  17. var list = from s in myDatabase.student

  18. select s;

  19. return View(list);

  20. }

  21. }

  22. }

 

9.接着添加一个视图来显示我们查询的数据,鼠标点击View()函数右击添加视图:

 

 

10.编辑视图,在<div>里添加table,以及添加相应的引用,代码如下:

 
  1. @model IQueryable<Test.Models.student>

  2. @using Test.Models

  3. @{

  4. Layout = null;

  5. }

  6.  
  7. <!DOCTYPE html>

  8.  
  9. <html>

  10. <head>

  11. <meta name="viewport" content="width=device-width" />

  12. <title>Index</title>

  13. </head>

  14. <body>

  15. <div>

  16. <table border="1">

  17. <tr>

  18. <th>学号</th>

  19. <th>姓名</th>

  20. </tr>

  21. @foreach (student s in Model)

  22. {

  23. <tr>

  24. <td>@s.sno</td>

  25. <td>@s.sname</td>

  26. </tr>

  27. }

  28. </table>

  29. </div>

  30. </body>

  31. </html>

11.最后将默认的控制器改成刚刚我们建立的控制器,编辑App_Start文件夹下的RouteConfig.cs文件,将controlre的参数改成Test(即控制器名),运行即可查看查询结果。

注:若出现依赖错误,可能是因为Nuget包版本问题,只需更新后即可解决

 
  1. routes.MapRoute(

  2. name: "Default",

  3. url: "{controller}/{action}/{id}",

  4. defaults: new { controller = "Test", action = "Index", id = UrlParameter.Optional }

  5. );

 

转自:  https://blog.csdn.net/danger_z/article/details/80466350

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值