Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql 微软试图用所有这些数据访问策略解决什么问题?_Linq To Sql_Entity Framework_Ado.net_Wcf Data Services - Fatal编程技术网

Linq to sql 微软试图用所有这些数据访问策略解决什么问题?

Linq to sql 微软试图用所有这些数据访问策略解决什么问题?,linq-to-sql,entity-framework,ado.net,wcf-data-services,Linq To Sql,Entity Framework,Ado.net,Wcf Data Services,微软似乎推出了许多不同的数据访问策略。有“经典”ADO.NET、Linq2Sql、ADO.NET实体框架、ADO.NET数据服务、ADO.NET动态数据。我肯定我错过了一些。在我看来,每个框架在应用程序架构中的位置似乎有很多混淆。微软试图用所有这些数据访问方法解决什么问题?他们试图解决如何增加销售额和市场份额的问题。为此,微软内部的各种组织试图解决如何让更多的开发者和最终用户使用他们的产品的问题。不同的团队采用不同的技术,与任何大公司一样,微软努力使其技术保持一致,团队朝着同一个目标努力。此外,

微软似乎推出了许多不同的数据访问策略。有“经典”ADO.NET、Linq2Sql、ADO.NET实体框架、ADO.NET数据服务、ADO.NET动态数据。我肯定我错过了一些。在我看来,每个框架在应用程序架构中的位置似乎有很多混淆。微软试图用所有这些数据访问方法解决什么问题?

他们试图解决如何增加销售额和市场份额的问题。为此,微软内部的各种组织试图解决如何让更多的开发者和最终用户使用他们的产品的问题。不同的团队采用不同的技术,与任何大公司一样,微软努力使其技术保持一致,团队朝着同一个目标努力。此外,随着新技术的出现,他们需要保持(或者更好的是,设定)速度,并继续支持客户投资的旧技术。对于任何一家相当大的公司,包括微软,最终的结果都是在技术选择上有些混乱。

你的混乱是我们的挫折。我们中许多为网站做出这些架构决策的人都对微软在这个问题上缺乏清晰性和良好的开发实践表示不满

我的团队肯定被Linq2Sql烧死了

我们现在使用领域驱动的设计方法,特别是巴勒莫的洋葱架构()来构建我们的网站。业务对象只是POCO,不依赖于基础架构


该基础设施现在由NHibernate和我们CMS的定制ORM处理。社区将继续朝着最佳方向发展NHibernate,我们将控制ORM的来源,这一认识远远超过了这些公司痛苦的启动成本。更糟的是,微软确实发布了一些在DDD体系结构中工作的非常引人注目的东西,我们只需要重写我们的基础结构层。

我看不出这个问题的意义。事实上,这有点像恶棍

  • ADO.NET是.NET 1.0的原始数据访问技术。它显然不属于任何关于新数据访问“策略”的讨论
  • LINQtoSQL是原始LINQ提供程序之一。它提供了数据库结构和程序中使用的类型之间的一对一映射。它是用来与SQL Server一起工作的
  • NET实体框架更加灵活。它可以与任何ADO.NET提供程序一起工作,并且有一个映射层,因此程序可以与更接近业务实体而不是数据库表的类一起工作。例如,单个实体可能包含来自多个表的数据。微软决定在EF上比在LINQtoSQL上花费更多的精力
  • ADO.NET数据服务是EF上的服务层。如果你打算生产自己的服务,只不过是公开数据,那么这是一个不错的选择。它使用REST接口,可以以ATOM格式公开数据
  • ASP.NET动态数据不是一种数据访问策略。看

这些区别非常明显,只要进行少量的研究就可以清楚地表明它们的区别。

他们已经制定了多年的数据策略。事实上,您可以也应该搜索“Microsoft数据访问策略”,您将找到新旧链接(即1998年及其OLEDB策略)

我认为您正在寻找的是2007年的数据,尽管已经2年了,但它涉及XML、ADO.NET、数据、LINQ、SQL Server、Visual Studio Orcas、实体框架……它们解决了Microsoft是否有数据访问策略的问题。:

是的,事实证明我们有。微软 设想一个实体数据平台 使客户能够定义通用的 跨数据服务的实体数据模型 和应用程序。实体数据 平台是一个多版本的愿景, 未来版本的报告 工具、复制、数据定义、, 安全等等,都是围绕着 通用实体数据模型。

迈克·皮佐,建筑师,数据 可编程性

我希望它能有所帮助。

如果您不熟悉底层概念,我会在Entity Framework的一个不错的技术介绍中找到这篇文章

这里有一节与这个问题相关,解释了EF的一些目标以及与ADO.Net的关系

ADO.NET实体框架是ADO.NET的演变,是EDM的第一个具体实现,在针对关系数据库进行开发时提供了更高级别的抽象。在第1版中,团队一直致力于建立一个平台的基础,而不仅仅是一个简单的ORM,这将允许开发人员与一个概念模型或对象模型合作,具有非常灵活的映射,并能够适应底层存储的高度偏离。 这种高度的灵活性和与底层存储的差异是允许数据库和应用程序分开发展的关键。当在数据库模式中进行更改时,实体框架将应用程序与更改隔离开来,并且通常不要求您重写应用程序的某些部分,而是在必要时更新映射文件以适应更改

为了开始改进ADO.NET平台,实体框架构建在现有ADO.NET 2.0提供程序模型的基础上,现有提供程序稍微更新,以支持新的实体框架和ADO.NET 3.5功能。我们选择在现有ADO.NET提供程序模型之上实现,以确保开发社区熟悉提供程序模型


你应该把这个问题变成一个社区维基问题,因为没有明确的答案。事实上,最好把它作为和其他许多问题的副本关闭