EntityFramework

C# 数据操作系列

拟墨画扇 提交于 2020-08-06 02:08:24
C# 数据操作系列 - 5. EF Core 入门 0.前言 上一章简单介绍了一下ORM框架,并手写了一个类似ORM的工具类。这一章将介绍一个在C#世界里大名鼎鼎的ORM框架——Entity Framework的Core版。 Entity Framework 非Core版目前已经更新到了6代,这是一款经过检验的ORM框架。在这里简单介绍一下Entity Framework(简称EF,额,别拿这个当关键字搜索,要不然你会被忽悠到一个英语培训机构的)的优点。 C#的设计理念是约定优于配置,意思就是通过一定程度的规范性格式化的写法来避免使用配置文件或者配置代码等。而EF可以说是很好的诠释了这个理念。 EF可以在不使用任何配置的前提下,自动解析类与表之间的映射(具体的映射逻辑与我们手写的ORM工具类一致或相近)。 自动跟踪更改。在直接使用通过EF获取的元素时,EF会自动跟踪哪些字段发生了变化,当手动调用保存的时候,EF就会把数据回传给数据库。 可以延迟加载需要的数据,外键引用属性、查询结果等 丰富的映射关系,支持一对一,一对多,多对多,甚至继承、单表多实例等 可以使用Linq 进行查询 非Core版的可以通过数据库表生成实体类,两种都可以通过实体类生成表 基于 ADO.NET 的数据库连接和可用于连接到 SQL Server、Oracle、MySQL、SQLite、PostgreSQL

学习asp.net Identity 心得体会(连接oracle)

早过忘川 提交于 2020-08-04 22:44:01
asp.net Identity具体功能暂不在此细说,下面主要介绍几点连接oracle注意的事项, 1.首先下载连接oracle驱动Oracle.ManagedDataAccess.dll和Oracle.ManagedDataAccess.EntityFramework.dll这个是连接oracle的基础。 2.在Nuget下安装Microsoft.AspNet.Identity.EntityFramework.dll和Microsoft.AspNet.Identity.Core.dll 和Microsoft.AspNet.Identity.Owin.dll。 3.更新Microsoft.AspNet.Identity.EntityFramework下的连接数据的modelBuilder.HasDefaultSchema("HB");,Microsoft.AspNet.Identity.EntityFramework默认情况是SQLserver下“dbo”,所以要更改其Schema为你用的oracle的用户名。 备注, public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { public ApplicationDbContext() : base("DefaultConnection",

asp.net core + entity framework core 多数据库类型支持实战

て烟熏妆下的殇ゞ 提交于 2020-07-29 04:08:29
根据微软官方文档的说法,有两种方法可以实现在一个app中同时适应多种不同类型的数据库,并且全部支持migrations操作。其一,使用两个dbcontext;其二,修改migration文件,添加特定数据库类型的Annotation。 本人在实际使用过程中发现,第二种情况几乎很难调通,总是在migration操作时遭遇各种奇怪问题,而且这种操作似乎也不太”干净“;第一种操作,一开始无论如何也调不通,后来发现是dbcontext的注入方式有问题,不能像默认模板生成的那样使用options参数,而是应该使用空白的构造方法,具体代码如下: DbContext: public class ApplicationDbContext : IdentityDbContext { public DbSet<Location> Locations { get ; set ; } protected override void OnModelCreating(ModelBuilder builder) { base .OnModelCreating(builder); } } public class PgDbContext : ApplicationDbContext { protected override void OnConfiguring(DbContextOptionsBuilder

如何查看由实体框架生成的SQL?

╄→尐↘猪︶ㄣ 提交于 2020-07-29 03:54:39
问题: How do I view the SQL generated by entity framework ? 如何查看实体框架生成的SQL? (In my particular case I'm using the mysql provider - if it matters) (在我的特殊情况下,我正在使用mysql提供程序-如果重要的话) 解决方案: 参考一: https://stackoom.com/question/5vY7/如何查看由实体框架生成的SQL 参考二: https://oldbug.net/q/5vY7/How-do-I-view-the-SQL-generated-by-the-Entity-Framework 来源: oschina 链接: https://my.oschina.net/u/4432649/blog/4405794

在ef core中使用postgres数据库的全文检索功能实战

元气小坏坏 提交于 2020-07-28 20:12:36
起源 之前做的很多项目都使用solr/elasticsearch作为全文检索引擎,它们功能全面而强大,但是对于较小的项目而言,构建和维护成本显然过高,尤其是从关系数据库/文档数据库到全文检索引擎的数据同步工作非常繁琐,且容易出错。 记得很久以前就知道postgresql数据库内置全文检索,最近发现这个数据库越来越火,于是就又研究了一番,欣喜的发现居然支持ef core,于是对其进行了一些研究,并整理心得如下。 前提 本文假设读者熟悉entity framework core的基本概念和基本使用。 目的 建立dotnet core项目,使用postgres数据库和ef core,实现常见的全文检索功能,包括 建立索引字段 基本查询 查询结果排名 查询结果高亮显示 步骤1 - 新建项目并引入packages < Project Sdk ="Microsoft.NET.Sdk" > < PropertyGroup > < OutputType > Exe </ OutputType > < TargetFramework > netcoreapp3.1 </ TargetFramework > </ PropertyGroup > < ItemGroup > < PackageReference Include ="EFCore.NamingConventions" Version =

《Microsoft .NET 企业级应用架构设计 (第2版)》

泄露秘密 提交于 2020-07-28 09:48:54
**《Microsoft .NET 企业级应用架构设计 (第2版)》 ========== ========== ========== [作者] (意) Dino Esposito (意) Andrea Saltarello [译者] (中) 李永伦 [出版] 人民邮电出版社 [版次] 2016年04月 第2版 [印次] 2018年05月 第5次 印刷 [定价] 69.00元 ========== ========== ========== 【第01章】 【今天的架构师和架构】 (P010) 需求经由首席架构师处理之后会交由开发团队实现。 (P011) 瀑布模型已是明日黄花,你可以将它的死亡归咎于软件开发是一种工程学。 软件开发最流行的敏捷方法学是极限编程 (XP) 。 (P012) 架构师参与开发流程的所有阶段,包括需求分析和架构设计、实现、测试、集成以及部署。 架构师的主要职责是 : 确认需求,把系统分解成更小的子系统,识别和评估技术,以及制定规范。 (P013) 架构师确认需求,尽力在设计里采用和满足它们。 (P014) 架构师需要具备的一个重要特征是语言清晰。 【第02章】 【为成功而设计】 (P020) 虽然 RAD 方案对于以数据为中心的小型简单应用程序 (如 CRUD 应用程序) 来说可能刚好合适

NetCore+Dapper WebApi架构搭建(一):基本框架

有些话、适合烂在心里 提交于 2020-07-28 04:05:31
初衷是想用dapper搭建一个高性能的架构,因为dapper操作数据库的效率很高 1、VS创建一个NetCore WebApi的框架,然后解决方案添加一个NetStandard的类库 整个解决方案如图所示 2、根据DDD架构的思想类库完全充当一个仓储的功能,因为服务层本来就是提供接口的,所以这里不再构建Application层,直接使用WebApi充当Application层,由于底层使用的是Dapper,所以数据层直接和仓储层合并了,要是使用EntityFramework,需要再构建一个EntityFramework层独立于仓储层 3、从解决方案中可以看出Entities文件夹就是存放实体类的,而Helper文件夹则是封装了一些常用的操作类RedisHelper只是写了写,具体还没有用到,而IRepository是仓储接口,Repository是仓储接口实现类,至于直接放在类库下面的这些类,下一讲会详细讲解的。 好了,架构不在多,能够看明白,能使用,完成具体的功能就可以了,楼主水平不高,如实架构有什么不足之处,还希望不吝赐教 源码地址: https://github.com/wangyulong0505/Dinner 来源: oschina 链接: https://my.oschina.net/u/4265623/blog/4436805

关于对Entity Framework Core3.1的理解与总结

我们两清 提交于 2020-07-28 03:42:12
Entity Framework Core 是一个ORM,所谓ORM也是ef的一个框架之一吧,简单的说就是把C#一个类,映射到数据库的一个表,把类里面的属性映射到表中的字段。然后Entity Framework Core3.1 是一个长期支持的版本。本人非常乐意对.NET社区繁荣奉献自己的青春。希望国内以后能够有越来越多的.NET程序员。 创建了一个.NET Standard类库。 可以编辑文件查看netStandard版本号,我这里是一个2.0版本。 顺便简单的说一下netStandard吧,实际上它应该就是一个开源库,不管是.NET Core还是EntityFramework都可以引用它。就是一个底层类库,并且该类库可以在不同的平台运行,ios、mac、linux等。一处编写多处运行,而且它还是开源的。当然这里你可以把它改成2.1的版本。 右键项目属性 这样就该好了。。。 然后又创建了一个类库,操作和上面一样,另一个是创建一个控制台应用,这个控制台应用是.NET Core应用的,版本应该是netcoreapp3.1,可以看看 以上准备工作完成后,就开始进行第一步操作,生成数据库! 在Demo.Main类库中创建所需要的类 这里我就简单的举个栗子。一个联赛类,一个是俱乐部类,一个是球员类,分别是一对多的关系。 namespace Demo.Main { /// <summary>

LR敏捷软件平台v7开发示例,功能设计模块化,UI特色明显(长文)

霸气de小男生 提交于 2020-07-27 10:03:08
*框架整体代码层次 整体采用多层工厂/依赖注入模式。 *开发示例 力软框架提供了比较友好的开发向导 在用力软框架进行快速开发时有两种开发模式,一种是纯自定义表单无需编译的,一种是需要生成代码,重新编译的。 *代码生成开发模式 选择一种开发向导 指定数据源、对各项开发参数进行设置 跟着开发向导一步步设置就可以自动生成代码,代码会根据开发者的设置放入到指定项目的指定位置。 标准的 MVC 架构,表示层代码在 LeaRun.Application.Web 项目下。 实体层代码被自动放置在 Entity 下 下面是实体层代码。 下面是业务逻辑层,这里是按工厂模式生成的,当然框架里已经提供了 IOC 容器也可以直接调整成依赖注入模式。 接口层代码 数据访问层,数据工厂已经将对数据库的访问提供了 EF 及 Dapper 这两种 ORM 的封,绝大部分情况下不需要写 SQL 语句,普通的 Lambda 表达式即可完成各种查询,代码整洁,可读性很好。 如果需要换成依赖注入模式,只需在 IOC 配置文件注册即可 下面是 MVC 中的视图层 前后端通过 ajax+json 交互。 就像上面,后台返回的 json 数据,很简单的就绑定到了表格上。像数据字典的也不用写 SQL 关联,这里的数据字典,直接就可以显示来名称。当然这些代码都是可以生成出来的,需要二次开发的话可以直接修改这些代码。

C#与Visual C++在桌面软件的开发比较

北战南征 提交于 2020-07-27 06:01:14
microsoft公 司推出了visual系列软件开发环境,包括为C++程序员提供的Visual C++.程序员能用C++语言在其上开发图形界面的软件。微软随Visual C++提供了很多用于显示Windows界面的库函数。可以说Visual C++就是C++加上windows图形界面。 市面上任何一本Visual C++教材都是假设用户已经掌握了C++语言,重点在讲和Windows程序设计相关的东西,而且往往都要讲MFC.没有C++基础,根本无法理解MFC 的任何东西。 VC++相比较C#,可以带来3倍的性能优势,3-10倍的资源占用优势。 因为C++靠近底层,封装较少,需要自己铺路造轮子的地方较多。所以开发困难一些,但也带来了更多的优化手段和运行效率,能够更充分利用计算机硬件资源。 通用的商业软件,自然要提供最佳性能了。否则,别人开发一个更快的,你就完蛋了。 作者:无缺草 链接:https://www.zhihu.com/question/40551563/answer/559487447 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 大公司不使用C#的原因还有。让自己开发的程序跑在 .net 上真是很不放心。 打个比方 即使 C# 有 PInvoke之类的平台调用技术,也可以写Windows Hook 但是一般只能写普通的窗口Hook