LINQtoEntities查询注意事项-创新互联
1> 排序信息丢失
创新互联专注于昌都网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供昌都营销型网站建设,昌都网站制作、昌都网页设计、昌都网站官网定制、微信小程序服务,打造昌都网络公司原创品牌,更为您提供昌都网站排名全网营销落地服务。如果在排序操作之后执行了任何其他操作,则不能保证这些附加操作中会保留排序结果。这些操作包括 Select 和 Where 等。另外,采用表达式作为输入参数的 First 和 FirstOrDefault 方法不保留顺序。
如下代码:并不能达到反序排序的效果
using (var edm = new NorthwindEntities()) { IQueryablecc = edm.Customers.OrderByDescending(c => c.CustomerID).Where(c => c.Region != null).Select(c => c); foreach (var c in cc) Console.WriteLine(c.CustomerID); }
2> 不支持无符号整数
由于 实体框架不支持无符号整数,因此不支持在 LINQ to Entities 查询中指定无符号整数类型。如果指定无符号整数,则在查询表达式转换过程中会引发 NotSupportedException异常,并显示无法创建类型为“结束类型”的常量值。此上下文仅支持基元类型(“例如 Int32、String 和 Guid”)。
如下将会报异常的代码:
using (var edm = new NorthwindEntities()) { uint id = UInt32.Parse("123"); IQueryableprodut = from p in edm.Products where p.UnitPrice == id select p.ProductName; foreach (string name in produt) Console.WriteLine(name); }
上面的代码中,由于id是uint而不是Int32,String,Guid的标量类型,所以在执行到where p.UnitPrice ==id这个地方时,会报异常。
3> 不支持引用非标量闭包
不支持在查询中引用非标量闭包(如实体)。在执行这类查询时,会引发 NotSupportedException 异常,并显示消息“无法创建类型为“结束类型”的常量值。此上下文中仅支持基元类型(‘如 Int32、String 和 Guid’)
如下将会报异常的代码:
using (var edm = new NorthwindEntities()) { Customers customer = edm.Customers.FirstOrDefault(); IQueryablecc = from c in edm.Customers where c == customer select c.ContactName; foreach (string name in cc) Console.WriteLine(name); }
上面的代码中,由于customer是引用类型而不是Int32,String,Guid的标量类型,所以在执行到where c==customer这个地方时,会报异常。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
新闻名称:LINQtoEntities查询注意事项-创新互联
文章源于:http://azwzsj.com/article/dsdhps.html