场景再现

我需要查询公司名称包含给定字符串的公司,于是我写了下面的测试小例子:

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='测试'...相关推荐

  1. 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='测试 ...

  2. Entity Framework Core 执行SQL语句和存储过程

    无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...

  3. ADO.net,Linq to SQL和Entity Framework性能实测分析

    [测试总结] 第一阶段测试结果非常出人意料,ADO.net和LINQ to SQL操作数据的时间都控制在0.5秒以内,非常的迅速,但是Entity Framework在添加这步表现非常差,由于这五步是 ...

  4. LINQ TO SQL和Entity Framework 的关系 你了解多少?

    1. LINQ  TO SQL 和EF 特点:  LINQ TO SQL和Entity Framework都是一种包含LINQ功能的ORM 也就是所谓的关系对象的映射.其中包括的有DBFrist  C ...

  5. Entity Framework 与 面向对象

    说要分享,我了个*,写了一半放草稿箱了两个星期都快发霉了,趁着周末写完发出来吧. 文章分为五部分: 基础.类讲述的是用到的一些EF与面向对象的基础: 业务是讲怎么划分设计业务: 设计模式和工作模式讲述 ...

  6. 全角半角符号引发的Entity Framework奇遇记

    SQL Server的SQL查询不区分大小写,而LINQ查询区分大小写,所以在写LINQ代码时需要注意的是--如果这段LINQ代码将会被Entity Framework解析为SQL语句(LINQ to ...

  7. Entity Framework 学习

    Entity Framework 学习初级篇1--EF基本概况... 2 Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateE ...

  8. 手把手引进门之 ASP.NET Core Entity Framework Core(官方教程翻译版 版本3.2.5)

    以下是手把手引进门教程,基于 ASP.NET Core, Entity Framework Core ,ABP 框架 创建Web 应用, PS: 自带自动的测试模块哦. 样例下载 (上 github  ...

  9. 什么是Entity Framework

    什么是Entity Framework Entity Framework是一个对象关系映射O/RM框架. Entity Framework让开发者可以像操作领域对象(domain-specific o ...

  10. ADO.NET Entity Framework 基本概述

    时间过得很快转眼间VS已经2010版了,在4月12日将会正式发布VS 2010 ADOEF 做为.Net 4.0 中被微软推荐的ORM框架,相比.Net 3.5 sp1 已经得到了进一步的增强,使用它 ...

最新文章

  1. MD5与Base64的思考
  2. Enterprise Library: Data Access Application Block配置文件分析篇
  3. priority queue
  4. C++ exception 类继承结构图
  5. C++中的NULL与DELPHI中的nil作用相同
  6. 计算机的颜色储存格式(索引色 真彩色)
  7. 【C++深度剖析教程12】数组操作符的重载
  8. python天气预测算法_使用机器学习预测天气(第二部分)
  9. DocumentHelper解析xml文件
  10. PHP实现动态获取函数参数的方法
  11. mysql 表迁移 并筛选_使用perl实现拆分数据表(mysql)并迁移数据实例
  12. 如何快速去除PDF的密码和限制:遇到PDF被加密,不能复制、编辑,怎么办?教大家一个又快又好用的方法、实用。
  13. python计算圆的周长_Python计算圆周长和面积
  14. 使用Sequelize实现文章和评论的一对多关系并实现评论的按时间排序
  15. 【硬十宝典目录】——1、电源类(更新中~)
  16. 用python创建widows窗口
  17. 请收下这份秘籍: 这里有关于申请 gTech 职位所需知道的一切
  18. 一条sql语句实现一维表生成二维表格
  19. vs好用吗?vs2022下载。
  20. Ubuntu16.04安装中文出现Transaction failed:Package dependencies cannot be resolve16.04d

热门文章

  1. 10个免费域名转发地址 无广告 无需要注册
  2. VSS无法访问的问题
  3. 谈天津地铁之为民服务
  4. 转 ---《协程小结》
  5. Win10系列:VC++绘制几何图形2
  6. Python3.0 我的DailyReport 脚本(四)发送日报
  7. 第六周Java学习总结
  8. Django里URL配置中name参数的作用
  9. VMware 12PRO安装Mac OS X 10.10.5
  10. java Servlet Filter 拦截Ajax请求