现在从C#访问数据库最常用的方法是什么

现在从C#访问数据库最常用的方法是什么,c#,database,C#,Database,好的,我问这个问题是因为我完全糊涂了。我曾经使用常规方法从C#访问数据库(我的意思是使用SQLConnection、OracleConnection、SQLCommand、executequery等)。然后我听说了ADO.NET、ORM和NHibernate(不是专业人士,但我能管理) 最近我没有看到任何关于NHibernate的特别活动。我周围曾经使用NHibernate的人(也是我的粉丝)现在开始转向其他方法 那么,现在最常用的数据库访问方法是什么?如何跟踪这种变化趋势?最常用的方法可能是:

好的,我问这个问题是因为我完全糊涂了。我曾经使用常规方法从C#访问数据库(我的意思是使用SQLConnection、OracleConnection、SQLCommand、executequery等)。然后我听说了ADO.NET、ORM和NHibernate(不是专业人士,但我能管理)

最近我没有看到任何关于NHibernate的特别活动。我周围曾经使用NHibernate的人(也是我的粉丝)现在开始转向其他方法


那么,现在最常用的数据库访问方法是什么?如何跟踪这种变化趋势?

最常用的方法可能是:

  • LINQ到SQL
  • 实体框架
  • 直接使用ADO.NET
  • 亚硝酸铵
  • 其他O/RMs

它们都还在使用中,各有优缺点。我认为微软目前正试图鼓励人们使用。

在我看来,为了快速开发应用程序,使用像LLBLGEN这样的ORM工具是最好的解决方案。您可以显著加快开发进度

SQL Server只有一种方法—ADO.NET。更具体地说,其中的连接和读卡器对象。现在,您可能会说有实体框架之类的东西,但有趣的是,它们位于真正的访问层之上,使用前面命名的两个访问元素。甚至数据集也是一个更高的层(数据是通过数据读取器读取的)

那么,最常用的数据库是什么 现在的访问方法

我打赌它仍然是数据集。遵循拖放原则的未受教育的人数仍然占大多数,而VisualStudio中的这种方法会产生数据集


专业人士使用某种ORM。实体框架现在受到了很多人的推动,他们大多不知道ORM能做些什么,因为他们的编程是正确的。目前,我的最佳选择仍然是NHibernate以获得高质量层。

因此,在.NET中访问数据库的技术很少。 首先,这是ADO.NET。这是一种“真正”的访问技术,因为另一种(如NHibernate、LINQ2SQL、Entity Framework(它们都是ORM))使用ADO.NET实际连接到数据库并对其执行命令。当然,.NET提供了其他与数据库交互的方法,例如导入一些COM接口,但它们不是自然的


此外,还存在帮助您与数据库通信的工具。它是ADO.NET扩展(如企业库数据访问),工具允许您使用对象(命名实体),这些对象在面向对象的运行时(如.NET)中很自然,但可以从数据库中加载和保存这些实体。这些名为ORM(对象关系映射器)的工具和现代工具都很容易使用,而且很好。

我个人喜欢使用Linq到Sql来生成实体,更具体地说,我认为它具有最易于扩展的特性。它允许您将所有实体对象分离到具有可编辑版本和生成版本的单独文件中。这允许您使用所需的尽可能多的助手函数来扩展DAL。它有一个VisualStudio附加模块,您只需单击即可重新生成所有实体

我通常先设计数据库,所以我在数据库中进行更改,转到VS重新生成实体,然后我可以继续编码

无论您选择什么,我认为ORM的一个重要因素是能够配置它以满足您的需求,这并不是万能的


顺便说一句,我不为CodeSmith工作,我只是使用它:)

如果我必须选择一种,我会说实体框架是最通用的方法, LINQ到SLQ在未来将被弃用,NHibernate在未来将越来越多


但最好的建议可能是为整个团队挑选一个!即使它有缺点,但在某些情况下,它们都有缺点。

NHibernate和Entity Framework是提取数据库的好工具(EF代码优先非常好),但在某些情况下,这是不好的

我见过许多应用程序在数据库连接上性能很差,NH或EF不允许控制查询或使用数据库最强大的功能,除非您是ORMs方面的专家(不幸的是,这种情况并不常见)

就我个人而言,我更喜欢控制自己


我创建了一个工具,我在我的项目中使用它,最近我把源代码放在了上面。

你周围的人说他们要转向什么?别忘了SqlDataSource、ObjectDataSource、LinqDataSource、LINQ-to-SQL、实体框架、ADO.Net数据服务……很多东西……正常的方法(他们说这有助于TDD)、LINQ,实体框架等等等等……你的问题,从字面上看,是关于市场份额的,因此非常离题。你可以试着做一次民意测验(CW),这取决于你是在哪一年学习.NET框架的。除了最后一段,这个答案还不错。实体框架被我们这些意识到存在不同类型的ORM的人所使用,每种ORM都有其独特的优点和缺点…因此我们选择实体框架作为我们的应用程序。不仅仅是“未经教育”的拖放使用,但是有很多现有的系统是使用ADO.NET和类型化数据集编写的,这些系统仍在开发中——没有人会仅仅为了使用较新的ORM技术而重构整个系统。@Herbie:遗留代码是一种明确的防御,对吧@到目前为止,贾斯汀-EF从来都不是一个像样的ORM。与更成熟的产品相比,它几乎没有任何优势。@Benjamin不要这样做。