如果您可以使用任何.NET DAL技术,您会选择什么?

Edw*_*uay 8 .net linq data-access-layer

几年后我又回到了.NET开发阶段,现在看来,特别是对于LINQ,您访问数据的方式已经改变并变得更加容易.例如,在ASP.NET MVC网站中,我可以:

这看起来很棒,但它是如何真实世界的?

  • 是你在实际项目中使用的上述LINQ-to-SQL场景,还是只是一种快速的脚手架技术,即当你开始添加,删除数据库中的字段和表时会发生什么,LINQ-to-SQL类是如何做的保持同步?

我如何理解这个领域的所有新技术,例如

  • Subsonic适合哪些地方?
  • Astoria(ADO.NET数据服务)适合哪些地方?
  • NHibernate适合哪些地方?
  • 如何使用LINQ-to-SQL的其他数据库(我尝试在对象关系设计器上拖动SQLite表并获得"不支持的错误")或者仅针对SQL Server使用LINQ-to-SQL?
  • LINQ-to-XML是否像LINQ-to-SQL一样工作,例如我可以将XML文件拖入设计器然后使用LINQ访问它们,还是我需要为此编写自己的代码?
  • LINQ-to-Entities是否像LINQ-to-SQL一样工作,即自动生成的类,但只有更多的选项?

  • 现在我们有LINQ,ADO.NET的DataTables和DataSets是一项老技术吗?LINQ-to-ADO.NET有意义吗?

  • Azure在哪里适合您甚至不再拥有RDBMS的地方

  • 当您的UI只是简单地与WCF交谈或与Web服务交谈时,ESB适合哪里?

现在我们有很多选择,如果您可以为项目选择任何这些技术,您会选择哪个以及为什么?

Zha*_*uid 4

最初的回应(主要是关于 LINQ 的东西):

  • LINQ to SQL 可以在实际项目中使用;我已经做好了。我们倾向于将所有数据访问代码放在您右键单击设计图面并选择“查看代码”时生成的分部类中,而不是分散在整个代码中。
  • 使用 LINQ to SQL,如果修改数据库,则需要删除并重新添加表 - 这是一个限制,使用实体框架,您可以“从数据库更新模型”以自动添加/删除这些列。
  • 它可能应该被称为 LINQ to MSSQL Server - 它直接与 SQL Server 绑定。如果您想对其他数据源使用类似的工具,您可以查看实体框架 - 但目前它还有其他限制 - LINQ to SQL 是它可以工作的概念证明。
  • ADO.NET 数据服务为您提供 ADO.NET 对象的基于 REST 的接口 - 因此您可以调用简单的 Web 服务来检索数据,而无需编写这些服务。
  • 不,没有 LINQ to XML 的设计界面 - 我想有人可以用 XSD 做一些事情,那会很有趣;)
  • 您可以将 Azure 视为“云中的操作系统”,它有一个用于存储的数据库,尽管正如您所说,它不是关系型的,没有联接,但您仍然会查询它的结果。

为了回答你的最后一个问题,我对 NHibernate 或其他人的了解还不够多,但我很乐意使用 LINQ to SQL 进行基本的数据库访问,但我已经开始考虑 LINQ to Entities 来处理更复杂的东西而不是其他的——主要是因为我喜欢那些漂亮的照片。