使用传统的sql去操作数据库虽然思路更加清晰,对每一步数据库读写操作都能监控到,但是对大数据存储,或存储规则复杂的程序就需要编写大量的SQL语句且不易维护。.orm大大方便了复杂的数据库读写操作, 让代码编写更易读,而且使用orm的很多特性可免去对数据库的一些维护操作。

第一步:安装Nuget包我这里连接的是SQL server数据库,这两个就够用了。

第二步:配置连接字符串,我这边引用了,System.Configuration.ConfigurationManager这个包,这样再.net core 程序里也可以像 传统framework那样读取配置

    public class RequestDataDBContent : DbContext
{
public DbSet<RequestData> RequestData { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//注入Sql链接字符串
optionsBuilder.UseSqlServer(System.Configuration.ConfigurationManager.ConnectionStrings["Data"].ConnectionString);
} }

连接字符串没有特殊要求,根据不通数据库配置provider

   <connectionStrings>
<add name="Data" connectionString="DATA SOURCE=Host;Initial Catalog=DBName;USER ID=sa;PASSWORD=Password;" providerName="System.Data.SqlClient" />
</connectionStrings>

接下来就要配置实体,跟数据库关联上下文了,这一步有许多小细节需要注意,不然很容易报错。

    [Table("Data")]  //这里用table指定数据库表名,这里是不需要家dbo的,加了反而报错, 不指定table也可以,一般默认数据库表名与实体名相同,传统ef配置了自动生成表的话,数据库表名默认为实体名的复数形式。。
public class RequestData
{
[Key]//指定主键,使用ef实体必须有主键
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]//我这里设置了自增长主键
public int id { get; set; }
public string did { get; set; } public DateTime utime { get; set; } public string pid { get; set; } public string type { get; set; } public string addr { get; set; } public string addrv { get; set; } public DateTime ctime { get; set; } }
                                                                                                        

数据库上下文代码

    public class RequestDataDBContent : DbContext
{
public DbSet<RequestData> RequestData { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//注入Sql链接字符串
optionsBuilder.UseSqlServer(System.Configuration.ConfigurationManager.ConnectionStrings["Data"].ConnectionString);
} }

这里就配置好了实体部分,接下来就是使用了

这里列举简单的查询,新增操作

            //创建数据库上下文
RequestDataDBContent db = new RequestDataDBContent(); foreach (Entity item in entityList)
{ item.did = requestBody.did;
item.utime = requestBody.utime; //去除重复数据,使用linq从数据库查询重复数据
int i = (from q in db.RequestData where q.id == item.id select q).Count(); if (i > 0)
{
continue;
}

//实体添加至当前数据库缓存
db.RequestData.Add(item);
} //批量提交至数据库
db.SaveChanges();

使用ef简单的操作就像这样就结束了。

在使用如果报错,说什么数据库对象不存在等等,这是需要关注下数据库中的表是否已建好。或者配置自动创建表。

EntityFramework Core (一)记一次 .net core 使用 ef 6的更多相关文章

  1. EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)

    官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大 ...

  2. [转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)

    本文转自:http://www.cnblogs.com/VolcanoCloud/p/5572408.html 官方文档英文地址:https://github.com/aspnet/EntityFra ...

  3. 详解C#泛型(二) 获取C#中方法的执行时间及其代码注入 详解C#泛型(一) 详解C#委托和事件(二) 详解C#特性和反射(四) 记一次.net core调用SOAP接口遇到的问题 C# WebRequest.Create 锚点“#”字符问题 根据内容来产生一个二维码

    详解C#泛型(二)   一.自定义泛型方法(Generic Method),将类型参数用作参数列表或返回值的类型: void MyFunc<T>() //声明具有一个类型参数的泛型方法 { ...

  4. .net core 开车记:Data Protection Key 过期问题与登录页面访问慢

    K8s 船还没修好,.net core 车又出了问题,开着 k8s 豪华邮轮.飚着 .net core 极品飞车的好事真是多磨. 自从我们用上 .net core ,就一直被 .net core 的一 ...

  5. .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

  6. .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介

    .NET Core 1.0.ASP.NET Core 1.0和EF Core 1.0简介 英文原文:Reintroducing .NET Core 1.0, ASP.NET Core 1.0, and ...

  7. Professional C# 6 and .NET Core 1.0 - 40 ASP.NET Core

    本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 40 ASP.NET Core --- ...

  8. .NET Core中文分词组件jieba.NET Core

    .NET Core中文分词组件jieba.NET Core,由于实际的一些需求,需要做中文分词. 找到了一个jieba.NET https://github.com/anderscui/jieba.N ...

  9. .NET Core 2.0和ASP.NET Core 2.0正式版抢先体验

    .NET Core 2.0和ASP.NET Core 2.0正式版抢先体验 .NET Standard 2.0 is final Broad platform support. .NET Standa ...

  10. ASP.NET Core中使用GraphQL - 第六章 使用EF Core作为持久化仓储

    ASP.NET Core中使用GraphQL ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间件 ASP ...

随机推荐

  1. python接口之request测试:以json格式发送post请求,.json方法,查看响应结果的情况

    json和dict python中的dict类型要转换为json格式的数据需要用到json库: import json <json> = json.dumps(<dict>) ...

  2. c语言循环位移(数字,字符串)

    C语言中没有提供循环移位的操作符,但可以通过简洁的方式实现循环移位 设一个操作数x有s位则循环左移n位的操作为: (x << n) | (x >> (s - n)); 同理右移 ...

  3. [hdu7042]二叉树

    考虑最后这棵二叉树的结构,不难发现被移动的点在原树或新树中构成的都是若干棵完整的子树 (若$x$被移动,则$x$在原树或新树的子树中所有点都会被移动) 先在原树中考虑此问题,对于每一棵由被移动的点所构 ...

  4. layui增加转圈效果

    var loadix = layer.load(1, {shade: [0.1,'#fff']}); layer.close(loadix);

  5. 百胜中国使用Rainbond实现云原生落地的实践

    百胜中国使用Rainbond实现云原生落地的实践 关于百胜中国 自从1987年第一家餐厅开业以来,截至2021年第二季度,百胜中国在中国大陆的足迹遍布所有省市自治区,在1500多座城镇经营着11023 ...

  6. 使用微软RPA工具 Power Automate自动完成重复性工作

    介绍 最近发现了win11自带了一个有趣的功能,可以自动去执行一些流程的工作.恰好目前每天早上都需要去提醒同事填写日计划,刚好可以试用下. 这是官网上对此功能的介绍 可以看到,对于win11我们是可以 ...

  7. 浅谈Java和JavaScript中变量和数据类型的区别

    对于一门编程语言的学习,如果第一步是安装环境,那么第二步一定是学习这门语言的基本规则,变量和数据类型则首当其冲 JavaScipt作为一个蹭Java热度而命名的语言,在很多方面和Java也有一定的相似 ...

  8. 洛谷 P4437 [HNOI/AHOI2018]排列(贪心+堆,思维题)

    题面传送门 开始 WA ycx 的遗产(bushi 首先可以将题目转化为图论模型:\(\forall i\) 连边 \(a_i\to i\),然后求图的一个拓扑序 \(b_1,b_2,\dots b_ ...

  9. JSOI2021 游记

    Day 0 - 2021.4.9 写一波最近的事情吧( 3 月 20 号出头 cnblogs 抽风,说 25 号恢复来着,我就囤了一堆博客在本地准备 25 号发,结果到时候就懒得动了.干脆越屯越多,省 ...

  10. javaSE中级篇2 — 工具类篇 — 更新完毕

    1.工具类(也叫常用类)-- 指的是别人已经写好了的,我们只需要拿来用就行了 官网网址:Overview (Java Platform SE 8 ) (oracle.com) ---- 但是这个是英文 ...