从基于SQL查询的方法转向Linq

时间:2013-03-29 09:52:42

标签: asp.net-mvc-3 linq linq-to-sql linq-to-entities

我对Linq和SQL都不是很擅长。但是我使用SQL更多地使用LINQ。我已经阅读了许多有利于LINQ的文章。我不想采用SQL方式(即编写存储过程和操作数据等)。

对于与数据相关的每个操作,我想从LINQ开始。以下是我想要这样做的原因:

  1. 我希望通过应用程序完全控制我的数据库,而不是通过编写存储过程(因为我不太擅长编写存储过程)。
  2. 我想将项目创建为易于维护的视图
  3. 希望更快发展
  4. 为此,我知道:

    1. 我需要添加一个dbml文件,将表拖放到
    2. 使用dbContext类,依此类推
    3. 但我想知道,有没有办法:

      1. 我可以避免创建dbml文件并仍能访问数据库吗?
      2. 我是否需要使用Linq to Entities?
      3. 这是避免使用dbml文件的好方法吗?因为每次数据库更改都需要每次都删除和删除表
      4. 另外我遇到过许多帖子,其中linqToSql被认为已被弃用而不是.net的未来?
      5. 我有很多疑问,但我认为在开始使用新技术时这是显而易见的?

        我发现这篇有用的文章对初学者有用:

        [http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx][1]
        
        经过一些研究后,我得出结论:

        1)我可以避免创建dbml文件并仍然可以访问数据库??

        ANS是,但现在将创建edmx文件而不是dbml。

        2)我是否需要使用Linq to Entities?

        ANS是的,你可以使用linq来实体。

        3)避免使用dbml文件会有好办法吗?因为每次数据库更改都需要每次都删除和删除表

        ANS不需要删除并再次创建表。它们是您可以更新数据库的选定部分的选项,您不会避免使用dbmls。它将创建edmx文件,并且在很多方面几乎与dbmls类似。

        4)另外我遇到过很多帖子,其中linqToSql被认为已被弃用而不是.net的未来?

        ANS是的,在未来的开发中它将被折旧。它只支持sql server作为后端。

        我希望我是对的。如果有任何其他建议,请告诉我。

1 个答案:

答案 0 :(得分:0)

LINQ是一种查询和项目数据收集的方法。例如,您可以使用LINQ从数据库或数组中查询和整形数据。 LINQ by it self与下面的数据库无关。

使用ORM(对象关系映射器)技术将存储在数据库表中的数据投影为对象集合。获得对象集合后,可以使用LINQ查询它们。

现在,您可以选择许多ORM技术,例如Entity Framework,NHibernate,Linq2Sql。如果您不想维护dbml文件,请查看Entity Framework提供的代码优先方法

然后有一些叫做LINQ数据提供者的东西。他们将获取LINQ查询,将其转换为针对特定数据库的SQL,执行查询并将结果作为一组对象返回。上面的许多ORM都内置了LINQ数据提供程序作为其中的一部分,并且在获取数据时可以在场景中工作。

我建议您查看一些模式,例如数据库的存储库和工作单元。如果使用正确,这些模式将使您的数据访问代码与应用程序上层隔离。这将帮助您更改数据访问技术,因为它已经过时,而不会影响应用程序的其余部分。

LINQ是一项非常棒的技术,您一定要尝试它

我根据自己的经验编写了上述答案,我确信有很多SO用户比我自己更了解上述技术,他们可能希望添加自己的观点

祝你好运