好的,我问这个问题因为我完全糊涂了。我曾经使用常规方法从C#访问数据库(我的意思是使用SQLConnection,OracleConnection,SQLCommand,executequery等)。然后我听说过ADO.NET,ORM并学习了NHibernate(不是专业人士,但我可以管理)。
最近我没有看到任何关于NHibernate的特定活动。过去常常使用NHibernate(并且是粉丝)的我周围的人现在转向其他方法。
那么现在最常用的数据库访问方法是什么?我怎样才能跟踪这种变化趋势?
答案 0 :(得分:19)
最常见的方法可能就是:
所有这些产品仍在使用中,它们各有优缺点。我认为微软目前正在努力鼓励人们使用Entity Framework。
答案 1 :(得分:10)
只有一种方法 - 用于SQL Server的ADO.NET。更具体地说,那里的Connection和Reader对象。现在,你可能会说像Entity Framework这样的东西 - 但有趣的是它们使用前面提到的两个访问元素,它们位于真正的访问层之上。甚至DataSet也是更高层(数据通过DataReader读取)。
那么最常用的数据库是什么 现在的访问方法?
我打赌它仍然是数据集。拖拽原则后未受过教育的数量仍然是恕我直言的大多数,而视觉工作室的这种方法导致了数据集。
专业人士使用各种ORM。实体框架现在被那些大多不了解ORM可以正确编程的人所推动。现在我最好的选择仍然是NHibernate,以获得高质量的图层。
答案 2 :(得分:4)
在我看来,对于快速应用程序开发,使用像LLBLGEN这样的ORM工具是最好的解决方案。您可以大大加快开发进度。
答案 3 :(得分:1)
因此,在.NET中访问数据库的技术很少。 首先,这是ADO.NET。它是一种“真正的”访问技术,因为其他(如NHibernate,LINQ2SQL,实体框架(它们都是ORM))使用ADO.NET实际连接到数据库并对其执行命令。当然,.NET提供了与数据库交互的其他方式,例如,导入一些COM接口,但它们并不自然。
此外,还存在可帮助您与数据库通信的工具。它是ADO.NET扩展(如企业库数据访问),工具允许您使用对象(命名实体),这些对象是面向对象的运行时自然的.NET,但是从数据库加载并保存这些实体。这些名为ORM(对象关系映射器)的工具和现代工具易于使用且非常好。
答案 4 :(得分:1)
我个人喜欢使用CodeSmith生成实体的Linq To Sql,更具体地说,我认为Plinqo最容易扩展。它允许您将所有Entity对象分离为具有可编辑版本和生成版本的单独文件。这允许您使用所需的辅助函数扩展DAL。它有一个Visual Studio加载项,只需单击即可重新生成所有实体。
我通常是数据库第一次设计,所以我在数据库中进行了更改,转到VS重新生成实体,然后我可以继续编码。
无论您选择什么,我认为ORM的一个重要因素是能够配置它以满足您的需求,没有一种尺寸适合所有。
BTW,我不为CodeSmith工作,我只是用它:)
答案 5 :(得分:1)
如果我必须选择一个,我会说实体框架是最通用的方式, LINQ to SLQ将来会被弃用,NHibernate将来会越来越多。
但最好的建议可能是尝试为整个团队挑选一个!即使它有缺点,它们都会在某个时刻或其他地方出现。
答案 6 :(得分:1)
NHibernate和Entity Framework是抽象数据库的好工具(EF Code First很棒),但在某些情况下,这很糟糕。
我见过许多应用程序表示数据库连接性能不佳,NH或EF不允许控制查询或使用数据库的最强大功能,除非您是ORM的专家(不幸的是,不常见)。
就个人而言,我更愿意保持控制权。
我创建了一个工具Thunderstruck,我在项目中使用了该工具,最近我将源代码放在Github上。