ADO.NET Entity framework 与 LINQ TO SQL 中的功能的一些差别(一)

    最近在用ADO.NET Entity framework操作数据时发现有很多都不能用上,前几天也发现一些但没有记下来,今天又出现了,我决定在博客园里把它记下来。

     这些功能 在LINQ TO SQL中可以用但在ADO.NET ENTITY FRAMEWORK 中确不能用。

今天在用到模糊查询时有用到  in模式的查询时突然出现异常代码如下:

int [] intArray  =  { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14  };
var query 
=  from a  in   AdonetContext.Products  // Products 为实体类(表名)
       where  intArray.Contains(a.FID)

      select a;

 IEnumable<Product> lists=query.ToList();


当执行到query.ToList()时(因为是延迟执行所以会在ToList方法时才直正执行查询)出现异常:

 LINQ to Entities does not recognize the method 'Boolean Contains[Int32](System.Collections.Generic.IEnumerable`1[System.Int32], Int32)' method, and this method cannot be translated into a store expression

而 这句话如果用 LINQ TO SQL 的话则可以正确执行最近生成的SQL语句为:

exec  sp_executesql N ' SELECT [t0].[FID], [t0].[FProName], [t0].[FManufacturer], [t0].[FCategory], [t0].[FProDate], [t0].[FPrice]
FROM [dbo].[Products] AS [t0]
WHERE [t0].[FID] IN (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13)
ORDER BY [t0].[FID] DESC
' ,N ' @p0 int,@p1 int,@p2 int,@p3 int,@p4 int,@p5 int,@p6 int,@p7 int,@p8 int,@p9 int,@p10 int,@p11 int,@p12 int,@p13 
int
' , @p0 = 1 , @p1 = 2 , @p2 = 3 , @p3 = 4 , @p4 = 5 , @p5 = 6 , @p6 = 7 , @p7 = 8 , @p8 = 9 , @p9 = 10 , @p10 = 11 , @p11 = 12 , @p12 = 13 , @p13 = 14

不知道微软为什么会这样做,ADO.NET Entity framework 确实在性能方面确实有优越于LINQ 但 其某些功能反而确少了。  欢迎各位路过英雄拍砖,同时给在下指点,指点。

 

转载于:https://www.cnblogs.com/seebook/archive/2009/03/12/1409980.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值