EntityFramework

ASP.NET Core MVC入门——3

♀尐吖头ヾ 提交于 2020-04-19 21:19:42
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-3.1&tabs=visual-studio 这一章节中,我们开始认识一下MVC中的M,也就是Model。 Entity Framework Core是微软提供给开发者的一个ORM框架,类似java中的MyBatis和Hibernate。将Plain Old CLR Objects(POCO)类可以直接转换为数据库中的增删改查的操作代码,减少重复开发代码量。 POCO 这种类是只有属性没有方法的类,纯粹表示数据,可以用于和数据库之间的映射。 EF Core库只要求我们写POCO类,然后该库就可以根据这些类自动在数据库中建立对应的表,以及相关的增删改查。 新建model Movie.cs using System; using System.ComponentModel.DataAnnotations; namespace MvcMovie.Models { public class Movie { public int Id { get; set; } public string Title { get; set; } [DataType(DataType.Date)] public

ASP.NET Core 2.0 MVC项目实战

怎甘沉沦 提交于 2020-04-18 14:53:01
一、前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的。之前实习时主要是做.NET的B/S架构的项目,主要还是用的那种传统的开发模式,只有一个项目用到了Web API,自己负责后端的接口功能实现。既然现在没办法改变现状,那就先改变自己吧。定了个计划,下班后慢慢的开始学习ASP.NET Core Web API和Vue,准备从前端到后端自己写一个小项目玩玩,毕竟代码这个东西,时间长了是会忘的。 嗯,有点扯远了。这个MVC项目是我的毕业设计,虽然写的比较烂,而且当时为了赶紧写完,代码的冗余程度有点高,但还是希望能给一些准备入门ASP.NET Core MVC的童鞋提供些借鉴吧。代码我放到Github上了,源码地址 https://github.com/Lanesra712/Danvic.PSU ,欢迎大神们拍砖,指出不足处。 二、项目介绍 毕业论文的课题是一个大学生的一个报名系统,主要是为了完成大学生报名过程中的一些数据维护,当然最后因为实在来不及了,好多都没做。。。项目主要使用到的相关技术如下所示: 项目框架:ASP.NET Core 2.0 MVC ORM:Entity Framework Core(使用Code First) 数据库引擎:MySQL SERVER 5.7 权限验证

【原创】基于.NET的轻量级高性能 ORM

拟墨画扇 提交于 2020-04-18 08:45:07
【前言】   接上一篇《 【原创】打造基于Dapper的数据访问层 》,Dapper在应付多表自由关联、分组查询、匿名查询等应用场景时不免显得吃力,经常要手写SQL语句(或者用工具生成SQL配置文件)。试想一下,项目中整个DAL层都塞满了SQL语句,对于后期维护来说无异于天灾人祸,这个坑谁踩谁知道。本框架在API设计上最大程度地借鉴 EntityFramework 的写法,干净的实体,丝滑的增删改查,稳健的导航属性,另外还支持链式查询(点标记)、查询表达式、聚合查询等等。在实体映射转换层面,使用 Emit 来动态构建绑定指令,性能最大限度地接近原生水平。 【XFramework 亮点】 原生.NET语法,零学习成本 支持LINQ查询、拉姆达表达式 支持批量增删改查和多表关联更新 支持 SqlServer、MySql、Postgre、Oracle,.NET Core 最大亮点,真正支持一对一、一对多导航属性。这一点相信现有开源的ORM没几个敢说它支持的 实体字段类型不必与数据库的类型一致 支持临时表、表变量操作 提供原生ADO操作 其它更多亮点,用了你就会知道 【性能】      看看与EntityFramework的性能对比,机器配置不同跑出来的结果可能也不一样,仅供参考。需要特别说明的是EntityFramework是用了AsNoTracking的

ABP大型项目实战(2)

自闭症网瘾萝莉.ら 提交于 2020-04-18 07:23:51
这是《 ABP大型项目实战 》系列文章的一篇。 项目发布到生产环境后难免会有错误。 那么如何进行调试和排错呢? 我看到俱乐部里有人是直接登陆生产服务器把数据库下载到开发机器进行调试排错。 这种办法是不适用于大型项目的: 首先,大型项目(特别是全球都有分公司的大型项目)很有可能24小时都有人在使用。所以尽量避免直接登录生产服务器操作,就算部署,也应该用DevOps、蓝绿部署等办法。 另外,如果大型项目有采用金丝雀发布和A/B测试,那么把数据库下载到开发机器这种方法是很不适用的。 即使大型项目没有采用金丝雀发布和A/B测试,也不适合把数据库下载到开发机器进行调试排错。因为数据库有可能很大,网络传输需要时间,特别是连VPN的时候,甚至有可能要从欧洲传到中国,又要从中国回传到欧洲。 生产环境数据库下载后为了安全还需要脱敏,这也需要时间。 还有其他方法,但是这些方法都存在一个问题,就是时光不能倒流,很多时候你是不可能叫客户回来重现一遍操作流程来复现bug的。 那么有什么好办法呢? 有的,通过查看日志来调试与排错。 ABP在这方面做得不错,内置了审计日志,提供了详细日志基类。嗯,这是两块内容了,一篇文章是讲不完的,所以我分开多篇文章来讲。 先从审计日志开始吧。 不得不说,ABP在这方面做得很好,审计日志是透明的,你要关闭审计日志反而要写代码控制。当然,这里不建议关闭审计日志。 然而

EntityFramework Core 3.0查询

ぐ巨炮叔叔 提交于 2020-04-18 06:34:13
前言 随着.NET Core 3.0的发布,EF Core 3.0也随之正式发布,关于这一块最近一段时间也没太多去关注,陆续会去对比之前版本有什么变化没有,本节我们来看下两个查询。 分组 我们知道在EF Core 3.0版本之前,对于分组查询是在客户端评估,也就是说在内存中操作,在EF Core 3.0版本后对于分组查询可以翻译成SQL在数据库进行,但是事实情况真的是这样吗?接下来我们来看下吧,如下给出代码例子。 public class EFCoreDbContext : DbContext { public EFCoreDbContext() { } public DbSet<Blog> Blogs { get ; set ; } public DbSet<Post> Posts { get ; set ; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlServer( @" Server=.;Database=EFTest;Trusted_Connection=True; " ); } public class Blog { public int Id { get ; set ; } public string

[翻译 EF Core in Action 2.3] 理解EF Core数据库查询

匆匆过客 提交于 2020-04-18 05:51:07
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。 原版地址 . 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天一篇更新 PS: 翻译难免限于本人水平有不准确的地方,建议英文水平不错的同学直接查看原版,有不足的地方欢迎指正 第一部分目录 导航 理解EF Core数据库查询 现在我们去查看如何使用EF Core查询数据库了. 图2.7展示了一个示例查询,其中包含三个重要的部分 注: 如果你熟悉EF 6.x或LINQ,可以跳过本节内容 图2.7中展示了由几个方法组成的一行代码,它们是函数式编程的风格,这样的风格在逻辑上更加直观,更容易阅读. 下面描述代码的三个部分 应用程序数据库上下文的属性访问 代码的第一部分通过EF Core连接到数据库, 引用数据库表的最常用的方法是通过数据库上下文的DbSet<T>属性 在本章都是使用数据库上下文的属性访问数据库表,在后面的章节会介绍到访问类或属性的其他方法,思想基本是一样的. 都需要通过EF Core连接到数据库开始 一系列的LINQ/ EF Core 命令 这部分是一组LINQ或EF

[翻译 EF Core in Action 1.9] 掀开EF Core的引擎盖看看EF Core内部是如何工作的

孤街浪徒 提交于 2020-04-18 05:50:39
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。 原版地址 . 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天一篇更新 PS: 翻译难免限于本人水平有不准确的地方,建议英文水平不错的同学直接查看原版,有不足的地方欢迎指正 第一部分目录导航 掀开EF Core的引擎盖看看EF Core内部是如何工作的 创建了MyFirstEfCoreApp应用程序后,你现在可以通过它查看EF Core的工作原理,重点不在于应用程序的代码,而是在读取和写入数据到数据库时EF Core内部会发生什么. 我的目标是让你了解EF Core的工作机制,当你深入研究本书其余部分的命令时,这会很有帮助 注 书中仅给出了关键代码, 完整示例在 https://github.com/JonPSmith/EfCoreInAction/tree/Chapter01 数据库建模 在对数据库进行操作之前,EF Core必须进行数据库建模. 数据库建模是EF Core通过实体类和其他EF Core配置来描述数据库的方法. EF

[翻译 EF Core in Action 2.2] 创建应用程序的数据库上下文

℡╲_俬逩灬. 提交于 2020-04-18 05:49:49
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。 原版地址 . 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天一篇更新 PS: 翻译难免限于本人水平有不准确的地方,建议英文水平不错的同学直接查看原版,有不足的地方欢迎指正 第一部分目录 导航 创建应用程序的数据库上下文 访问数据库前我们需要以下操作: 定义应用程序的数据库上下文,创建类并继承EF Core的DbContext类 访问数据库时,需要创建该类的实例 本章后面所有的数据库查询都是这些步骤,下面我会详细的描述这些步骤 定义应用程序的数据库上下文: EfCoreDbContext 使用EF Core的关键类就是应用程序的DbContext,该类继承EF Core的DbContext类. 添加各种属性代表数据库中的表. 它还可以覆盖基类方法使用EF Core的其他功能,比如配置数据库建模等. 图2.6展示了应用程序数据库上下文的概述并指出了重要的部分 图2.6中你并没有看到上一节提到的Review实体类和BookAuthor中间类的DbSet<T>属性,不用惊讶

[翻译 EF Core in Action 2.4] 加载相关数据

依然范特西╮ 提交于 2020-04-18 05:49:14
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。 原版地址 . 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天一篇更新 PS: 翻译难免限于本人水平有不准确的地方,建议英文水平不错的同学直接查看原版,有不足的地方欢迎指正 第一部分目录 导航 加载相关数据 之前我向你展示了Book实体类,它有其他三个实体的导航属性: PriceOffer,Review和BookAuthor. 下面介绍如何使用代码访问这些数据. 你有以下方式加载数据: 贪婪加载,显式加载,选择加载和懒加载(在EF Core 2.1中) 有一点很重要,EF Core默认不会加载实体类的任何关系(导航属性),如果加载了Book类,在默认情况下Book实体的每个导航属性都为null 默认不加载任何关系的行为是正确的,这意味着EF Core最小化了数据库访问. 如果你想加载一个关系则添加需要代码告诉EF Core. 下面介绍三种方法,以及它们的优缺点 贪婪加载: 加载与主实体类的关系 加载相关数据的第一种方法是贪婪加载. 贪婪加载需要告诉EF

开源题材征集 + MVC&EF Core 完整教程小结

守給你的承諾、 提交于 2020-04-18 05:48:41
到目前为止,我们的MVC+EF Core 完整教程的理论部分就全部结束了,共20篇,覆盖了核心的主要知识点。 下一阶段是实战部分,我们将会把这些知识点串联起来,用10篇(天)来完成一个开源项目。 现向园友征集题材,你提需求我来实现。 请在评论中提出你的需求,并加以简明扼要的描述。 题材最好是有趣的、有一定应用价值的,例如像Trello这样的效率管理系统。(可右键图片查看大图) 我将会在选取一个相对适合的题材,通过敏捷开发,快速迭代,将详细开发过程记录下来,抛砖引玉,供大家参考。 前面已完成的20篇我们以技术为主导,后面的10篇我们将会以产品为主导。 开发完之后,博主可以提供个云服务器将程序放上去给大家使用,我们可以一边玩一边改进。 主要开发环境: 1、.net core 3 最新版 2、js & jquery(如果时间允许,我们尽量多用原生js), bootstrap 3、MS SQL 2016 我们尽量只选用必要的工具,剥离表象,直达问题本质,降低大家学习成本。 让大家学会,只凭一把菜刀如何做出满汉全席。 最终的开源项目将会具有: 1、详细的使用说明书(直接放在系统中,点击帮助就能看到) 2、详细的代码说明,v1.0版本后将会托管到github上 3、详细的开发说明(代码演进),以博客园系列文章发布,了解代码演讲过程比最终的代码更有价值。 感谢写作过程中各位园友的鼓励和支持