Entity Framework 6 执行Linq to Entities异常p__linq__1 : String truncation: max=0, len=2, value='测试'...
场景再现
我需要查询公司名称包含给定字符串的公司,于是我写了下面的测试小例子:
var condition = "测试"; var query = from b in db.Companieswhere (condition == null || condition == "") ? true : b.Name.Contains(condition)orderby b.CompIDselect new{CompID = b.CompID,Name = b.Name};Console.WriteLine("All companies in the database:"); foreach (var item in query) {Console.WriteLine("ID:" + item.CompID + "\tName:" + item.Name); }
没想到运行的时候出现如下异常:
异常信息:“p__linq__1 : String truncation: max=0, len=2, value='测试'”。
异常截图:
在EF的映射关系中,我明明将Name一项设了最大长度是64:
public class CompanyMap : EntityTypeConfiguration<Company>{public CompanyMap(){ToTable("Companies");HasKey(p => p.PKCompany);Property(p => p.Name).IsRequired().HasMaxLength(64).HasColumnName("Company");Property(p => p.IsChecked).IsRequired();}}
那为什么查询的时候会说最大长度是0,而传入的参数长度是2,超过了这个0呢?
问题方案
我尝试把where部分的三元表达式前面去掉,直接使用contains判断是没问题的,于是我怀疑是三元表达式那个条件出问题了,而提示字符串最大长度是0,我想到可能是判断空字符那个条件有问题,所以我提前处理了一下,把程序改成如下,然后绕过了这个异常:
var condition = "测试";//... condition = (condition == null || condition == "") ? null : condition; var query = from b in db.Companieswhere condition == null ? true : b.Name.Contains(condition)orderby b.CompIDselect new{CompID = b.CompID,Name = b.Name};
如果条件为null或者为空字符"",那么都改成空null,这么改完以后程序就工作了。
我查找了不少资料,介绍的方案都不是太有用,这里记录一下如果有遇到这个异常的同学可以试一下!
这里我也没用LinqPad去测试翻译的结果,这个难道是EF的一个bug?
转载于:https://www.cnblogs.com/dxy1982/p/4818855.html
Entity Framework 6 执行Linq to Entities异常p__linq__1 : String truncation: max=0, len=2, value='测试'...相关推荐
- Entity Framework 6 执行Linq to Entities异常“p__linq__1 : String truncation: max=0, len=2, value=‘测试‘“
Entity Framework 6 执行Linq to Entities异常"p__linq__1 : String truncation: max=0, len=2, value='测试 ...
- Entity Framework Core 执行SQL语句和存储过程
无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...
- ADO.net,Linq to SQL和Entity Framework性能实测分析
[测试总结] 第一阶段测试结果非常出人意料,ADO.net和LINQ to SQL操作数据的时间都控制在0.5秒以内,非常的迅速,但是Entity Framework在添加这步表现非常差,由于这五步是 ...
- LINQ TO SQL和Entity Framework 的关系 你了解多少?
1. LINQ TO SQL 和EF 特点: LINQ TO SQL和Entity Framework都是一种包含LINQ功能的ORM 也就是所谓的关系对象的映射.其中包括的有DBFrist C ...
- Entity Framework 与 面向对象
说要分享,我了个*,写了一半放草稿箱了两个星期都快发霉了,趁着周末写完发出来吧. 文章分为五部分: 基础.类讲述的是用到的一些EF与面向对象的基础: 业务是讲怎么划分设计业务: 设计模式和工作模式讲述 ...
- 全角半角符号引发的Entity Framework奇遇记
SQL Server的SQL查询不区分大小写,而LINQ查询区分大小写,所以在写LINQ代码时需要注意的是--如果这段LINQ代码将会被Entity Framework解析为SQL语句(LINQ to ...
- Entity Framework 学习
Entity Framework 学习初级篇1--EF基本概况... 2 Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateE ...
- 手把手引进门之 ASP.NET Core Entity Framework Core(官方教程翻译版 版本3.2.5)
以下是手把手引进门教程,基于 ASP.NET Core, Entity Framework Core ,ABP 框架 创建Web 应用, PS: 自带自动的测试模块哦. 样例下载 (上 github ...
- 什么是Entity Framework
什么是Entity Framework Entity Framework是一个对象关系映射O/RM框架. Entity Framework让开发者可以像操作领域对象(domain-specific o ...
- ADO.NET Entity Framework 基本概述
时间过得很快转眼间VS已经2010版了,在4月12日将会正式发布VS 2010 ADOEF 做为.Net 4.0 中被微软推荐的ORM框架,相比.Net 3.5 sp1 已经得到了进一步的增强,使用它 ...
最新文章
- MD5与Base64的思考
- Enterprise Library: Data Access Application Block配置文件分析篇
- priority queue
- C++ exception 类继承结构图
- C++中的NULL与DELPHI中的nil作用相同
- 计算机的颜色储存格式(索引色 真彩色)
- 【C++深度剖析教程12】数组操作符的重载
- python天气预测算法_使用机器学习预测天气(第二部分)
- DocumentHelper解析xml文件
- PHP实现动态获取函数参数的方法
- mysql 表迁移 并筛选_使用perl实现拆分数据表(mysql)并迁移数据实例
- 如何快速去除PDF的密码和限制:遇到PDF被加密,不能复制、编辑,怎么办?教大家一个又快又好用的方法、实用。
- python计算圆的周长_Python计算圆周长和面积
- 使用Sequelize实现文章和评论的一对多关系并实现评论的按时间排序
- 【硬十宝典目录】——1、电源类(更新中~)
- 用python创建widows窗口
- 请收下这份秘籍: 这里有关于申请 gTech 职位所需知道的一切
- 一条sql语句实现一维表生成二维表格
- vs好用吗?vs2022下载。
- Ubuntu16.04安装中文出现Transaction failed:Package dependencies cannot be resolve16.04d