ASP.NET Core 1.0 中 EntityFramework 与 PostgreSQL 的使用
https://docs.efproject.net/en/latest/providers/npgsql/index.html
前面在CentOS6.7环境下配置好了PostgreSQL, 就顺便试了一下 ASP.NET Core 1.0 环境下EF与PostgreSQL的使用,就是.NET Core 还不支持CentOS,要么就可以部署一下试试。
依赖包
- "dependencies": {
- "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
- "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
- "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
- "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
- "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
- "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
- "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
- "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
- "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
- "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
- "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
- "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
- "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
- "EntityFramework.Commands": "7.0.0-rc1-final",
- "EntityFramework7.Npgsql": "3.1.0-rc1-3",
- "EntityFramework7.Npgsql.Design": "3.1.0-rc1-5"
- },
- "commands": {
- "web": "Microsoft.AspNet.Server.Kestrel",
- "ef": "EntityFramework.Commands"
- },
CODE FISRT
- public class StockHqDbContext : DbContext
- {
- public DbSet<Blog> Blogs { get; set; }
- public DbSet<Post> Posts { get; set; }
- protected override void OnModelCreating(ModelBuilder modelBuilder)
- {
- // Make Blog.Url required
- modelBuilder.Entity<Blog>()
- .Property(b => b.Url)
- .IsRequired();
- }
- }
- public class Blog
- {
- public int BlogId { get; set; }
- public string Url { get; set; }
- public List<Post> Posts { get; set; }
- }
- public class Post
- {
- public int PostId { get; set; }
- public string Title { get; set; }
- public string Content { get; set; }
- public int BlogId { get; set; }
- public Blog Blog { get; set; }
- }
注册PostgreSqlProvider
- public void ConfigureServices(IServiceCollection services)
- {
- var connection = Configuration["PostgreSqlProvider:ConnectionString"];
- services.AddEntityFramework()
- .AddNpgsql()
- .AddDbContext<StockHqDbContext>(options => options.UseNpgsql(connection));
- // Add framework services.
- services.AddMvc();
- }
配置文件
- {
- "Logging": {
- "IncludeScopes": false,
- "LogLevel": {
- "Default": "Verbose",
- "System": "Information",
- "Microsoft": "Information"
- }
- },
- "PostgreSqlProvider": {
- "ConnectionString": "User ID=postgres;Password=xxxxx;Host=xxx.xxx.xxx.xxx;Port=5432;Database=stockhq;Pooling=true;"
- }
- }
执行命令
- dnvm use 1.0.0-rc1-final(dnvm install 1.0.0-rc1-final)
- dnx ef migrations add FirstMigration
- dnx ef database update
构造页面
- public class BlogsController : Controller
- {
- private StockHqDbContext _context;
- public BlogsController(StockHqDbContext context)
- {
- _context = context;
- }
- public IActionResult Index()
- {
- return View(_context.Blogs.ToList());
- }
- public IActionResult Create()
- {
- return View();
- }
- [HttpPost]
- [ValidateAntiForgeryToken]
- public IActionResult Create(Blog blog)
- {
- if (ModelState.IsValid)
- {
- _context.Blogs.Add(blog);
- _context.SaveChanges();
- return RedirectToAction("Index");
- }
- return View(blog);
- }
- }
视图
- @model IEnumerable<StockHq.Models.Blog>
- @{
- ViewBag.Title = "Blogs";
- }
- <h2>Blogs</h2>
- <p>
- <a asp-controller="Blogs" asp-action="Create">Create New</a>
- </p>
- <table class="table">
- <tr>
- <th>Id</th>
- <th>Url</th>
- </tr>
- @foreach (var item in Model)
- {
- <tr>
- <td>
- @Html.DisplayFor(modelItem => item.BlogId)
- </td>
- <td>
- @Html.DisplayFor(modelItem => item.Url)
- </td>
- </tr>
- }
- </table>
- @model StockHq.Models.Blog
- @{
- ViewBag.Title = "New Blog";
- }
- <h2>@ViewData["Title"]</h2>
- <form asp-controller="Blogs" asp-action="Create" method="post" class="form-horizontal" role="form">
- <div class="form-horizontal">
- <div asp-validation-summary="ValidationSummary.All" class="text-danger"></div>
- <div class="form-group">
- <label asp-for="Url" class="col-md-2 control-label"></label>
- <div class="col-md-10">
- <input asp-for="Url" class="form-control" />
- <span asp-validation-for="Url" class="text-danger"></span>
- </div>
- </div>
- <div class="form-group">
- <div class="col-md-offset-2 col-md-10">
- <input type="submit" value="Create" class="btn btn-default" />
- </div>
- </div>
- </div>
- </form>
访问:http://localhost:49648/Blogs/Create 增加数据,完事,睡觉。
REFER:
http://dotnet.github.io/getting-startedhttps://github.com/aspnet/EntityFramework
https://github.com/npgsql/npgsql
.NET跨平台:在Linux上基于ASP.NET 5用EF7生成数据库
http://www.cnblogs.com/dudu/p/4621933.html十分钟轻松让你认识Entity Framework 7
http://www.cnblogs.com/n-pei/p/4274907.html
ASP.NET Core 1.0 中 EntityFramework 与 PostgreSQL 的使用的更多相关文章
- ASP.NET Core 1.0 中的依赖项管理
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 在ASP.NET Core 1.0中如何发送邮件
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:目前.NET Core 1.0中并没有提供SMTP相关的类库,那么要如何从ASP.NE ...
- ASP.NET Core 1.0 中使用 Swagger 生成文档
github:https://github.com/domaindrivendev/Ahoy 之前文章有介绍在ASP.NET WebAPI 中使用Swagger生成文档,ASP.NET Core 1. ...
- 用ASP.NET Core 1.0中实现邮件发送功能
准备将一些项目迁移到 asp.net core 先从封装类库入手,在遇到邮件发送类时发现在 asp.net core 1.0中并示提供SMTP相关类库,于是网上一搜发现了MailKit 好东西一定要试 ...
- 在ASP.NET Core 2.0中使用CookieAuthentication
在ASP.NET Core中关于Security有两个容易混淆的概念一个是Authentication(认证),一个是Authorization(授权).而前者是确定用户是谁的过程,后者是围绕着他们允 ...
- 如何在ASP.NET Core 2.0中使用Razor页面
如何在ASP.NET Core 2.0中使用Razor页面 DotNetCore2017-11-22 14:49 问题 如何在ASP.NET Core 2.0中使用Razor页面 解 创建一个空的项 ...
- ASP.NET Core 3.0中使用动态控制器路由
原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...
- asp.net core 3.0 中使用 swagger
asp.net core 3.0 中使用 swagger Intro 上次更新了 asp.net core 3.0 简单的记录了一下 swagger 的使用,那个项目的 api 比较简单,都是匿名接口 ...
- 探索 ASP.Net Core 3.0系列三:ASP.Net Core 3.0中的Service provider validation
前言:在本文中,我将描述ASP.NET Core 3.0中新的“validate on build”功能. 这可以用来检测您的DI service provider是否配置错误. 具体而言,该功能可检 ...
随机推荐
- readystatechange事件
IE为DOM文档中的某些部分readystatechange事件. 这个事件的目的是提供与文档或元素的加载状态有关的信息,但是这个事件的行为有时候也很难预测. 支持readystatechange事件 ...
- codeblocks+SDCC开发51单片机
说到51,大部分人都是用的是KEIL开发环境,但是KEIL是商业软件,我们一般人都用的是破解版的,如果用于商业就会收到法律诉讼.然而有一款很好的编译器专为51内核而存在.SDCC最大的有点就是开源免费 ...
- 20155326 2016-2017-2 《Java程序设计》第7周学习总结
20155326 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 Lambda (1)如果使用JDK8的话,可以使用Lambda特性去除重复的信息. (2)在 ...
- Javaweb异常提示信息统一处理
Java异常封装(自己定义错误码和描述,附源码) 2016年01月29日 22:30:54 小宝鸽 阅读数:23262 标签: java异常 更多 个人分类: Java基础 所属专栏: Java工作实 ...
- Uval4726-数形结合的思想
题意:给定一段01序列,求一段长度不小于L的连续序列,使其平均值最大 思路:一看就想到了斜率优化,但是用基本的推公示一直没推出来,看了别人的代码,像推出斜率的式子一直没弄出来..后来一看别人写的题解, ...
- LDO-AMS1117
AMS1117 1.是AMS艾默森公司简称.与AMS1117对应的IC有LM1117.AMS1117的最大输入电压为15V,而LM1117的极限是20V. 2.其输出电压有固定式(1.5V,1.8V, ...
- (25)uniGUI for C++ builder之UniHTMLMemo初使用及uniGUI如何调用javaScript
(25)uniGUI for C++ builder之UniHTMLMemo初使用及uniGUI如何调用javaScript 2018年09月29日 22:58:20 中国银行之路在脚下 阅读数:11 ...
- DELPHI微信支付代码
DELPHI微信支付代码 不管是微信支付还是支付宝支付, 3个最棘手的问题是:1,如何生成签名2,支付请求如何提交3, 如何验证签名 下面就围绕这二个问题来讲. 我使用的是XE3. 先看微信支付: ...
- 根据cxgrid的filterControl建立强大灵活的过滤器
- 如何利用JUnit开展一个简单的单元测试(测试控制台输出是否正确)
待测类(CreateString)如下: public class CreateString { public void createString() { //Output the following ...