我在网上看到很多.netCore的信息,就动手自己写一个例子测试哈,但是想不到其中这么多坑;

1.首先.netCore和EF的安装就不用多说了,网上有很多的讲解可以跟着一步一步的下载和安装,但是需要注意点就安装Microsoft.EntityFrameworkCore.SqlServer程序包(Install-Package Microsoft.EntityFrameworkCore.Sqlite –Pre);

2.创建实体

/// <summary>
/// 学生类
/// </summary>
public class Student
{
/// <summary>
/// ID
/// </summary>
[Key]
public Guid ID { get; set; } = Guid.NewGuid();
/// <summary>
/// 名字
/// </summary>
[StringLength()]
[Required]
public string Name { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
/// <summary>
/// 性别
/// </summary>
public EmSex Sex { get; set; } = EmSex.未填;
}
public enum EmSex
{
男 = ,
女 = ,
未填 =
}

3.创建EF的上下文DbContext

public class DbContextHelper : DbContext
{
public DbSet<Student> StudentEntity { get; set; } public DbContextHelper() { } public DbContextHelper(DbContextOptions options) : base(options)
{
} //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
//{
// string str = "data source=.; Initial Catalog=NetCore_TestDB ; uid=sa; pwd=qwertyuiop";
// optionsBuilder.UseSqlServer(str);
// //optionsBuilder.UseSqlite(str); //}
}

4.编写数据库操作的接口和实现类

 public interface IStudentService
{
Task<int> AddStudnet(Student entity);
Task<int> DeltStudent(Guid id);
List<Student> GetStudent(Expression<Func<Student,bool>> fun);
}
public class StudentService : IStudentService
{
public async Task<int> AddStudnet(Student entity)
{
using (DbContextHelper dbHelper =new DbContextHelper () ) {
await dbHelper.AddAsync(entity);
return dbHelper.SaveChanges();
}
}
public async Task<int> DeltStudent(Guid id)
{
using (DbContextHelper dbHelper =new DbHelper.DbContextHelper ()) {
var entity =await dbHelper.StudentEntity.FindAsync(id);
if (entity == null)
{
return -;
}
else
{
dbHelper.StudentEntity.Remove(entity);
return dbHelper.SaveChanges();
}
}
}
public List<Student> GetStudent(Expression<Func<Student, bool>> fun)
{
using (DbContextHelper dbHelper =new DbHelper.DbContextHelper ()) {
var List = dbHelper.StudentEntity.Where(fun).ToList();
return List;
}
}
}

5.创建Controller进行调用

public class HomeController : Controller
{
private IStudentService StudentDb = new StudentService();
// GET: /<controller>/
public IActionResult Index()
{
var list = StudentDb.GetStudent(it=>true);
return View();
}
}

6.下面配置数据库链接和EF的初始化创建

public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration); //services.AddEntityFrameworkSqlServer()
// .AddDbContext<DbContextHelper>();
//options =>
// options.UseSqlServer(Configuration["AppSettings:DefaultConnectionStr"])
services.AddDbContext<DbContextHelper>(options => options.UseSqlite(Configuration["AppSettings:DefaultConnectionStr"])); services.AddMvc();
services.AddTransient<IStudentService, StudentService>();
}
"AppSettings": {
"DefaultConnectionStr": "data source=.; Initial Catalog=NetCore_TestDB ; uid=sa; pwd=qwertyuiop"
},

上面很多网上都有相关的资料可以查询,我这里只是梳理了哈,下面开始运行

开始报这个错误

后面经过查看很多资料,晓得是上下文的注册造成的,这个问题就需要注意几点:

1.获取字符串一定要注意不要不能包含空格符号

services.AddDbContext<DbContextHelper>(options => options.UseSqlite(Configuration["AppSettings:DefaultConnectionStr"]));

2.一定给要注意区分哈UseSqlite和UseSqlServer;

修改之后运行,还是会有上面的问题,具体原因我也不是很清楚,但是我找宁外一种解决方案进行初始化数据库链接字符串,重写OnConfiguring

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string str = "data source=.; Initial Catalog=NetCore_TestDB ; uid=sa; pwd=qwertyuiop";
optionsBuilder.UseSqlServer(str);
}

修改之后在运行,问题得到了解决。

需要源码留下邮箱我看到后发,一起讨论!

.NetCore之EF跳过的坑的更多相关文章

  1. pg_stat_statements跳过的坑

    pg_stat_statements跳过的坑 原本以为只是一个简单的插件扩展安装,三下五除二就能搞定,结果搞了很久也没找到问题所在.首先pg_stat_statements已经安装成功,且已经能够使用 ...

  2. 微信小程序跳转以及跳转的坑

    一.首先小程序的跳转方法有一下几种 js控制跳转 // 保留当前页面,跳转到应用内的某个页面 wx.navigateTo({ url: '../blueberry/blueberry' }); // ...

  3. 微信小程序从入坑到放弃之坑十二:navigator无法跳转的坑

    转自:http://www.yilingsj.com/xwzj/2018-11-25/weixin-miniprogram-navigator.html 微信小程序中的页面跳转用navigator就行 ...

  4. Python,Pycharm,Anaconda等的关系与安装过程~为初学者跳过各种坑

    1.致欢迎词 我将详讲讲述在学Python初期的各种手忙脚乱的问题的解决,通过这些步骤的操作,让你的注意力集中在Python的语法上以及后面利用Python所解决的项目问题上.而我自己作为小白,很不幸 ...

  5. 菜鸡之NetCore 使用EF操作数据库 Oracle & Sqlserver (一)

    摘要: 该篇文章主要记录netCore EFCore 如何操作Oracle和SqlServer 数据库,采用Codefirst方式创建数据库以及表. 一, 项目建立 项目采用DDD领域驱动设计模式[学 ...

  6. 在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记

    SkyWalking 概述 SkyWalking 是观察性分析平台和应用性能管理系统.提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案.支持Java, .Net Core, PHP, ...

  7. 跟我一起学.NetCore之EF Core 实战入门,一看就会

    前言 还记得当初学习数据库操作时,用ADO.NET一步一步地进行数据操作及查询,对于查询到的数据还得对其进行解析,然后封装返回给应用层:遇到这种重复而繁琐的工作,总有一些大神或团队对其进行封装,从而出 ...

  8. .NET框架 - NETCORE + API + EF + MYSQL

    .NET框架 - NETCORE + API + EFCORE + MYSQL 1. 新建项目: 本文中使用 框架 .netcore2.2 . 2. 生成项目框架 3 安装MYSQL插件 点击“工具” ...

  9. NetCore+MySql+EF 数据库生成实体模型

    NetCore版本    2.1 1.点击“工具”->“NuGet包管理器”->“程序包管理器控制台” 分别安装以下几个包 Mysql 版本: MySql.Data.EntityFrame ...

随机推荐

  1. 关于自己写C++的一点风格

    现在,我学了很长时间的C++,但是自己就是无法精通.许多知识是入门书上没有的.现在写C++最重要的就是风格问题. 我现在的C++风格: 把自己所有的东西都放在一个名称空间下. 没有全局的函数,有的函数 ...

  2. 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

    阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...

  3. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  4. 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net

    1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...

  5. 了解PHP中的Array数组和foreach

    1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组    . 2.例子:一般的数组 这里,我 ...

  6. ASP.NET Core的路由[4]:来认识一下实现路由的RouterMiddleware中间件

    虽然ASP.NET Core应用的路由是通过RouterMiddleware这个中间件来完成的,但是具体的路由解析功能都落在指定的Router对象上,不过我们依然有必要以代码实现的角度来介绍一下这个中 ...

  7. 玩转spring boot——结合AngularJs和JDBC

    参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...

  8. Create a Team in RHEL7

    SOLUTION VERIFIED September 13 2016 KB2620131 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  9. jira的插件开发流程实践

    怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...

  10. 如何区别数据库删除语句drop与delete与truncate?

    1.delete:删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行) 删除某一行:delete from 数据表名称 where 列名称=值: 删除所有行:delete*fro ...