0

0

配置使用EF常见的一些问题及解决方案_MySQL

php中文网

php中文网

发布时间:2016-05-30 17:09:55

|

1632人浏览过

|

来源于php中文网

原创

提示未注册,找不到驱动程序

no entity framework provider found for the ado.net provider with invariant name 'system.data.sqlclient'. make sure the provider is registered in the 'entityframework' section of the application config file.

这个问题比较坑,我根据上面的提示,跑到配置文件去查看,看有没有entutyFramework节点,是否注册驱动。结果按照网上的解决方案把配 置文件贴上去了还是报错,然后再查看EntityFramework.SqlServer.dll是否已经引用到数据访问层类库中,也在。这下就懵逼了, 到底上面情况,网上各种搜,比如把EntityFramework.SqlServer.dll的赋值到本地属性设为True后还是没有用,折腾了个把小 时,最后突然看了一眼bin\Debug目录,发现只有一个EntityFramework.dll文件,没有 EntityFramework.SqlServer.dll,我就瞬间释然了,原来是这样。。。

 

证件照制作小程序免费版
证件照制作小程序免费版

在线证件照系统是一套完善的冲印行业解决方案,致力于解决用户线上拍摄证件照,拍摄最美最标准证件照的使命。证件照免费版功能:后台统计:当天制作、当天新增、支持规格、近7日统计规格列表:筛选查看、编辑用户列表:筛选查看常见问题:筛选查看、新增、编辑、删除小程序设置:应用设置、流量主设置小程序跳转:筛选查看、新增、编辑、删除关注公众号:引导设置系统要求:系统:Linux系统(centos x64)运行环境

下载

解决方案:

 

1.检查是否引入EntityFramework.dll 和EntityFramework.SqlServer.dll

 

2.检查是否设为复制到本地属性为True

 

3.检查配置文件是否注册驱动

 

如我的是sqlserver数据库:

 

 

4.查看编译后的目录中是否有这2个dll,如果没有,手动拷贝进去

 

提示表名无效

 

有时候新加了一个实体类,数据库也相应加了一个表。然后理所当然的运行增加数据,结果就出现这提示

排查过程

 

然后又是一阵排查,再次确认了数据库中确实存在表,还手动存进去了一条数据。再跑到BaseContext:DbContext这个类里面一阵 翻,确定已经有  public DbSeta_Emp { get; set; }这个属性了。又跑到实体类中确认字段是否吻合,主键[key]标记是否已经标了。最后又对比了之前的项目2个实体之间的差别。最后终于发现。。。实体类 没有和数据库关联

 

解决方案

 

1.确认数据库表是否存在

 

2.确认BaseContext:DbContext类中是否有属性

 

3.确认实体类中字段与主键

 

4.确认实体于数据库表是否关联

 

[Table("a_Emp")]

public class Employee

 

另:实体类上面的[table]小括号里面的就是数据库的表名,并且该标记需要引用dll

 

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;

 

数据库字段记录为null时 ef 操作数据库报错

错误排查

 

这个问题是数据库字段为空导致的,ef 反射赋值时实体时发生的错误,如:ToList()、

 

_db.Set().AddRange(entry);

_db.SaveChanges();

 

解决方案

 

2种任选一种

 

1.将数据库所有字段都赋值,不存在为空的情况 自然不会报错,但毕竟繁琐

 

2.将数据库中可空字段再实体中用可空类型表示

 

如:

 

public DataTime? CreateTime{get;set;}

public int? Num{get;set;}

public decimal? Pirce{get;set;}

 

目前我知道的就这2种,应该够用了

 

EF中的外键

 

外键是常用的数据关联形式,在数据访问中占据重要位置,下面来看看使用外键的几个步骤

 

一、将2个实体类都准备好,一个主键表一个外键表,例如 员工表中需要部门编号 那么就需要准备员工类和部门类

 

二、在员工实体类Employee中加入一个对象实体,加一个部门Id,没错,不是一个单纯的部门ID 而是实体

 

    [Key]
        public int EmpId { get; set; }
        /// 
        /// 姓名
        /// 
        public string EmpName { get; set; }
        /// 
        /// 性别
        /// 
        public string Sex { get; set; }
        /// 
        /// 生日
        /// 
        public DateTime BirthDay { get; set; }
           
        /// 
        /// 部门
        /// 
        public int DepId { get; set; }

  /// 
        /// 关联主表
        /// 
        [ForeignKey("EmpId")]
        public Dept Dept { get; set; } //注意:ForeignKey("EmpId")中的EmpId 就是员工类的主键

 

四、Dept部门表中必须有主键

 

五、调用的时候

 

db.a_Emp.Include("Dept").Where(l => l.Dept.name.Contains(name)||string.IsNullOrEmpty(name)).ToList()

 

其中a_Emp是员工类的实体对象,在baseContext里面的 public DbSeta_Emp { get; set; }

 

Dept.name是可以直接点出来的了

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

91

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

27

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

11

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

5

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

5

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号