.NetCore之EF跳过的坑
我在网上看到很多.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跳过的坑的更多相关文章
- pg_stat_statements跳过的坑
pg_stat_statements跳过的坑 原本以为只是一个简单的插件扩展安装,三下五除二就能搞定,结果搞了很久也没找到问题所在.首先pg_stat_statements已经安装成功,且已经能够使用 ...
- 微信小程序跳转以及跳转的坑
一.首先小程序的跳转方法有一下几种 js控制跳转 // 保留当前页面,跳转到应用内的某个页面 wx.navigateTo({ url: '../blueberry/blueberry' }); // ...
- 微信小程序从入坑到放弃之坑十二:navigator无法跳转的坑
转自:http://www.yilingsj.com/xwzj/2018-11-25/weixin-miniprogram-navigator.html 微信小程序中的页面跳转用navigator就行 ...
- Python,Pycharm,Anaconda等的关系与安装过程~为初学者跳过各种坑
1.致欢迎词 我将详讲讲述在学Python初期的各种手忙脚乱的问题的解决,通过这些步骤的操作,让你的注意力集中在Python的语法上以及后面利用Python所解决的项目问题上.而我自己作为小白,很不幸 ...
- 菜鸡之NetCore 使用EF操作数据库 Oracle & Sqlserver (一)
摘要: 该篇文章主要记录netCore EFCore 如何操作Oracle和SqlServer 数据库,采用Codefirst方式创建数据库以及表. 一, 项目建立 项目采用DDD领域驱动设计模式[学 ...
- 在 .NetCore 项目中使用 SkyWalkingAPM 踩坑排坑日记
SkyWalking 概述 SkyWalking 是观察性分析平台和应用性能管理系统.提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解决方案.支持Java, .Net Core, PHP, ...
- 跟我一起学.NetCore之EF Core 实战入门,一看就会
前言 还记得当初学习数据库操作时,用ADO.NET一步一步地进行数据操作及查询,对于查询到的数据还得对其进行解析,然后封装返回给应用层:遇到这种重复而繁琐的工作,总有一些大神或团队对其进行封装,从而出 ...
- .NET框架 - NETCORE + API + EF + MYSQL
.NET框架 - NETCORE + API + EFCORE + MYSQL 1. 新建项目: 本文中使用 框架 .netcore2.2 . 2. 生成项目框架 3 安装MYSQL插件 点击“工具” ...
- NetCore+MySql+EF 数据库生成实体模型
NetCore版本 2.1 1.点击“工具”->“NuGet包管理器”->“程序包管理器控制台” 分别安装以下几个包 Mysql 版本: MySql.Data.EntityFrame ...
随机推荐
- TypeScript: Angular 2 的秘密武器(译)
本文整理自Dan Wahlin在ng-conf上的talk.原视频地址: https://www.youtube.com/watch?v=e3djIqAGqZo 开场白 开场白主要分为三部分: 感谢了 ...
- 在vim中使用查找命令查找指定字符串
要自当前光标位置向上搜索,请使用以下命令: /pattern Enter 其中,pattern 表示要搜索的特定字符序列. 要自当前光标位置 ...
- 微信开发 :WeixinPayInfoCollection尚未注册Mch 问题解决
在使用开源项目 SENPARC.WEIXIN SDK 调用微信支付接口的时候出现了WeixinPayInfoCollection尚未注册Mch,这个问题. 最后地解决方案是: 我这个傻逼忘了在全局Gl ...
- 纸箱堆叠 bzoj 2253
纸箱堆叠 (1s 128MB) box [问题描述] P 工厂是一个生产纸箱的工厂.纸箱生产线在人工输入三个参数 n, p, a 之后,即可自动化生产三边边长为 (a mod P, a^2 mod p ...
- (翻译)FIFO In Hardware
翻译一些自己觉得有价值的材料,工作中碰到英语大多数是读,基本没有写或者翻的,翻得不好不到位的敬请指摘. 同时也附原文以供参考. http://electronics.stackexchange.com ...
- Extjs 让combobox写起来更简单
也已经写了很久时间的extjs ,每次都用到很多的combobox,配置很多东西觉得实在是太麻烦,所以根据常用到的情况写了一个简便的combobox,再次记录下来,以免放在某个地方忘记了找不到了. 定 ...
- [Android]使用Dagger 2来构建UserScope(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6237731.html 使用Dagger 2来构建UserSco ...
- SqlServer之数据库三大范式
分析: 数据库设计应遵循三大范式分别为: 第一范式:确保表中每列的原子性(不可拆分): 第二范式:确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依 ...
- 端盘子的服务生到月薪一万五的IT精英,你能相信吗
一直以来,我都觉得自己不是一个有故事的人. 以前的我,是个乖宝宝,对父母言听计从,特别内向,甚至一度感觉到自卑.不上学之后,我干过送货员,去工地除泥搬砖,当过油漆工,去过工厂,还去饭店当过端盘子的服务 ...
- 第14章 Linux启动管理(1)_系统运行级别
1. CentOS 6.x 启动管理 (1)系统运行级别 ①运行级别 运行级别 含义 0 关机 1 单用户模式,可以想象为Windows的安全模式,主要用于系统修复.(但不是Linux的安全模式) 2 ...