请看下如下代码:
var entities = new DbEntities();
var model = entities.hw_data_carrierinfo.FirstOrDefault(c => c.CAI_Name == "广东电信");
代码意图就是在数据库里找名字叫"广东电信"的记录.诡异的是数据库里明明有代码却找不到.求解.
数据库:MySql
表类型:InnoDB
字符集: utf8
监视FE生成的sql:
SELECT Extent1.CAI_Id, Extent1.CAI_Name, Extent1.CAI_Remark
FROM hw_data_carrierinfo AS Extent1
WHERE @gp1 = Extent1.CAI_Name
有空格?
监视生成的sql语句 就知道了 。
生成的语句:
SELECT Extent1.CAI_Id, Extent1.CAI_Name, Extent1.CAI_Remark
FROM hw_data_carrierinfo AS Extent1
WHERE @gp1 = Extent1.CAI_Name
我的"广东电信"在哪里?
1.你把数据库中的数据复制出来把 "广东电信" 中的广东电信覆盖掉看看,
2.把var model = entities.hw_data_carrierinfo.FirstOrDefault(c => c.CAI_Name == "广东电信");改为:var model = entities.hw_data_carrierinfo.Where(c => c.CAI_Name == "广东电信").FirstOrDefault();
别连错数据库了,有没有可能是Test和Dev 的数据库连错了?亲.我干过这样的活
数据库中 CAI_Name 字段是 nvarchar 还是 nchar ? 如果是定长的,可能会有空格,这样试试
var model = entities.hw_data_carrierinfo.FirstOrDefault(c => c.CAI_Name.Trim() == "广东电信");