• LINQ to Entities 不识别方法“Boolean Like(System.String, System.String)”,因此该方法无法转换为存储表达式。


    标题是我在编写asp.net mvc3时报错的错误提示, 如有遇到此错误, 请继续往下看..

     在使用C#进行网页开发时, 我们可以使用linq进行快速便捷的数据库操作, SQL查询中, 有提供like关键字进行模糊查询, 对应的 linq提供了相应的方法进行模糊查询——SqlMethods.Like(string, string);

    出现该错误的原因:

    • 使用了ADO.NET实体数据模型
    • 直接对对ADO.NET实体使用SqlMethods.Like(string, string);方法

    错误示例:

    string str = "%t%y%t%";
    Table_1[] t_1 = (from tab in Database_1.Table_1
                     where SqlMethods.Like(tab.Title, str)
                     orderby tab.Id descending
                     select tab).ToArray();

     错误说明:

      示例中的Database_1.Table_1是System.Data.Entity.DbSet<TEntity>类型, 出错实际原因是因为SqlMethods.Like(string, string);方法不能对System.Data.Entity.DbSet<TEntity>类型进行操作,上面的代码在使用的数据模型是Linq to SQL类型的时候便不会报错。

    解决方案:

      根据错误说明, 我们知道, 报错的原因在于类型不对, 所以我们只需要将Database_1.Table_1进行类型转换即可, 目标类型为IEnumerable<T>, 使用AsEnumerable<T>()方法即可。

    正确示例:

    string str = "%t%y%t%";
    Table_1[] t_1 = (from tab in Database_1.Table_1.AsEnumerable<Table_1>()
                     where SqlMethods.Like(tab.Title, str)
                     orderby tab.Id descending
                     select tab).ToArray();
  • 相关阅读:
    C#编程规范
    实用JavaScript代码库
    JSON入门
    asp.net基本事件
    iOS开发笔记 3、iOS基础
    iOS开发笔记 8、真机调试和发布软件
    数据同步框架MS Sync Framework不同场景使用例子和简要分析
    使用AppFabric 承载WCF和WF服务实例分析和说明
    .net程序员的iPhone开发MonoTouch
    iOS开发笔记 4、iOS中的Cocoa、设计模式等
  • 原文地址:https://www.cnblogs.com/hourglasser/p/3307338.html
Copyright © 2020-2023  润新知