我目前面临一个问题是要把我的项目数据库从MSSQL迁移到MySQL上来,NHibernate不会用,看了些示例感觉太复杂繁琐,所以我决定用EF.可喜的是MySQL6.0已经支持EF了,我已经成功用LINQ查询测试过,但是我原来针对于 MSSQL 平台写的 T-SQL 是否可以直接放在EF上面让EF去生成MySQL的专用语句呢??著名的Hibernate有一个通用SQL就是 hsql ,它可以隐藏数据库平台差异 生成各平台的专用SQL语句,EF是否也提供了同样的通用SQL(目前我知道linq是的), 貌似有个叫  ESQL 的EF的体系结构分了三层,最下一层是数据提供器,这个目的显然是隐藏数据源差异的,假设不提供一个通用的查询方式,
试问写一个专用的SQL语句又有什么意思??不是违背设计宗旨么?表达有点不清楚,反正EF充当黑盒,提供一个 统一查询的门面  把数据源的差异不对 上层体现就需要提供一个 通用查询接口我想明白这个通用的查询方式有哪些,谢谢 !!!!

解决方案 »

  1.   

    不明白你要问什么。通用查询,无非就是底层根据不同数据库生成不同的SQL语句而已。
    数据库都支持标准的T-SQL语句,只是在部分细节不相同,比如SQL生成变量的用@,oracle用:
    mysql的``和mssql的''这样的区别
      

  2.   

    他们通用查询的方式在于,框架本身生成SQL语句,而不是自己去写SQL语句。
    如果你目前的项目框架是考虑数据库迁移的,那迁移起来就容易。
    如果不是。迁移起来肯定比较麻烦的
      

  3.   

    其实你把NHI学会了 其他的也就差不多了去博客园看看李永京的文章。。
      

  4.   

    在谷歌里面搜索 "Entity SQL" 结果一大堆,我现在已经完全清晰了EF 里面的 Entity SQL  相当于 NHibernate 里面的HSQLhttp://msdn.microsoft.com/zh-cn/library/bb387145.aspx本人分少,你不回答我自己解决了
      

  5.   

    上面引用错了在谷歌里面搜索 "Entity SQL" 结果一大堆,我现在已经完全清晰了EF 里面的 Entity SQL 相当于 NHibernate 里面的HSQLhttp://msdn.microsoft.com/zh-cn/library/bb387145.aspx本人分少,你不回答我自己解决了