不会有什么linq to oracle了,linq to sql都已经被淘汰很久了...你说那些第三方组件大概是当年想跟着微软赶时髦结果被坑了的过时货...ADO.NET EF只需要DB EF Provider...不幸地是微软不会再为oracle搞Provider了,去找第三方Provider比如Data Direct之类或者等oracle自己升级ODP.NET...

解决方案 »

  1.   

    问2楼,一直没明白Linq tosql到底是什么东西?
    我在程序中用Linq的语法操作一些sql查询出的数据集合和一些数组这算算在使用Linq?
    linq to sql又为什么会被淘汰呢?
    请教。多谢。
      

  2.   

    to: vrhero一二年前我用到Oracle的情况可能多些,现在根本没有用到的时候了。好像vs10之后,确实找不到Oracle Data Provider似的。按原理讲EF底层也要调用ADO.NET Data Provider,那么vs10环境下进行EF+Oracle的开发时要怎么做?我只是好奇,请vrhero告知一下。
      

  3.   

    你没问我,不过我说说我的感观。我觉得Linq to Sql太“数据库”了。而Linq to Entities刚是query against model的感觉。这么说吧,Linq To Sql,程序代码中给你的感觉还是在和数据库打交道,但在Linq to Entites里,程序代码给你的感觉就像是没有数据库,你在修改一些对象集合,你做了修改,你删了其中一个对象,你向对象集合里增加了一个对象……然后你SubmitChanges()确定修改,那么EF自动会把这些反映到数据库里。如果还是觉得和Linq to Sql没什么大区别,那么Linq to Entites里可以把数据库表之间的关系映射成和数据库里完全不一样的,且支持继承的Entity Models,这一点就和Linq to Sql完全不一样了……
      

  4.   

    ADO.NET Data Provider和ADO.NET EF Provider是两个概念...ADO.NET Data Provider for Oracle就是System.Data.OracleClient,微软一直有提供,Oracle也有官方的ODP.NET,还有很多第三方Providers...而ADO.NET EF Provider是ADO.NET Entity Framework的Provider,微软目前没有SQL Server以外的官方Providers,但是有第三方提供...比如上面提到的Data Direct就推出了Oracle ADO.NET Entity Framework、Sybase ADO.NET Entity Framework和DB2 for iSeries ADO.NET Entity Framework三种Providers...ADO.NET Entity Framework就不多说了,Linq在其中只是单纯的Linq,和DB已经没有耦合关系了...至于Linq to SQL一开始我就不看好,跟DB耦合度太高注定了它会很快被淘汰...
      

  5.   

    这么说我使用的Linq语法其实并不是Linq to sql?我看一些开源的代码也经常使用实体类来保存一些取得到的数据。然后用Linq 的语法来进行操作。
      

  6.   

    .NET是一个一站式的平台,Windows SQL Server IIS ASP.NET 等等。给你的建议就是使用这些黄金搭档,要不然一样也不要用。
      

  7.   

    你得搞清楚...Linq是Linq,Linq to SQL是Linq to SQL,两码事...Linq to SQL是个产品,一个失败的ORM...而Linq是一种语言,可以应用于多种框架,包括Linq to Object、Linq to XML、Linq to EF等等...Linq语法和SQL没啥关系,只不过Linq to SQL和ADO.NET EF Provider可以把Linq翻译成SQL而已...
      

  8.   

    说白了,EF Provider 也好 Linq2SQL 也好,本质就是一个实现了 IQueryable 接口的类库,它复杂把LINQ查询表达式转换成数据库查询,并且提早在数据库中查询。
      

  9.   

    to: vrhero我也想起来了,ADO.NET Data Provider必须升级为支持Entity Framework.我不太认同“ADO.NET Data Provider和ADO.NET EF Provider是两个概念...”这句话。
      

  10.   

    多谢大神指教。我明白了,我用的是Linq的语法,我还没用过Linq to sql呢。。现在一般访问数据库除了最原始的ADO.NET和你所说Linq to sql之外还有其它的吗
      

  11.   

    http://topic.csdn.net/u/20110425/21/1138a99c-ea32-46b2-af2d-c3d357ea1f29.html
    我给了一个框架代码,你可以写自己的提供程序。
      

  12.   

    是两个概念...ADO.NET Data Provider是ADO.NET的基础Provider,ADO.NET EF Provider是依赖于ADO.NET Data Provider的...比如SQL Server的ADO.NET EF Provider是System.Data.Entity,是依赖System.Data.SqlClient的...虽然有些第三方组件在ADO.NET EF Provider里包含了ADO.NET Data Provider,但不能说“ADO.NET Data Provider升级为”,比如上面提到的Data Direct也都有独立版本的ADO.NET Data Provider提供...其实你这样想想,不是所有项目都需要用EF的...有些场景用EF就太臃肿了...
      

  13.   

    其实也就是原始的ADO.NET->Linq to Sql->Linq to Entities。
      

  14.   

    to: vrhero但你如何看待这种解释?
      

  15.   

    这个解释很清楚啊...ADO.NET EF Provider(就是图中的Entity Client data Provider)依赖于ADO.NET Data Provider...
      

  16.   


    Entity Client Data Provider这东西已经是Entity Framework所包含的东西了,也就是微软的东西。所以其他ADO.NET Data Provider(包括SqlClient, Oracle,IBM……),如果想和微软这个EF协同工作,那么必须升级他们各自的ADO.NET Data Provider,比如支持4.0的Code-First等等,这是我的理解。
      

  17.   

    严格意义上,这个改一下应该是ADO.NET->Linq to Sql->Entity Framework。也就是说Entity Framework里的Linq to Entities, Entity SQL, Object Services层,Entity Cient data Provider层,ADO.NET data Provider这整个加起来才对应Linq to Sql这个东西。Linq to Entities仅仅是EF里的一种查询语言。
      

  18.   

    显然你理解错了,Entity Client Data Provider也是需要各厂商或第三方提供的,微软只提供了自家SQL Server的Provider...升级的意思就是Add这个Entity Client...实际上这个Entity Client就是EDM SQL翻译器,是EF中唯一和DB耦合的东西,它依赖ADO.NET Data Provider工作...而ADO.NET Data Provider是基础Provider,而且不需要EF的ADO.NET Data Provider的场景更多...没有理由为了EF把ADO.NET Data Provider搞得臃肿不堪...
      

  19.   


    我最后终于想起我的“升级”说是出自哪里了,<Programming Entity Framework(2nd Edition)>第7页:
    也许最终还是理解错了,不过至少目前为止我还是坚持没有另外的EF Provider之说,是EF的Entity Client层与“升级(或update)”为支持EF的ADO.NET Data Provider配合一起把与数据库无关的由Entity Sql(或LINQ to Entities)生成的所谓Command Tree转换为数据库SQL语句,而且在这个转换过程中具体的ADO.NET Data Provider起关键作用。
      

  20.   

    原来linq to sql 早淘汰了。看来out了
      

  21.   

    看了半天,发现只有vrhero是明白人。
      

  22.   

    linq to sql 与linq to entity 还好只是模型层不同 操作都是写linq