ASP.NET 动态数据教程-两种数据模型的区别

作者:vkvi 来源:ITPOW(原创) 日期:2009-4-5

在前面我们提到过建立 ASP.NET 动态数据网站时,可以选择两种模型:LINQ to SQL 和 ADO.NET Entity Framework。那么这两种数据模型有什么区别呢?用微软的话来说是这样的:

LINQ to SQL 和 Entity Framework 具有很多共同之处,但两者也都具有一些面向不同应用场景的功能。LINQ to SQL 更倾向于针对现有 Microsoft SQL Server 架构快速开发应用程序。Entity Framework 通过与现有关系架构的松耦合灵活映射,提供对 Microsoft SQL Server 和第三方数据库的对象和存储层访问。

LINQ to SQL

LINQ to SQL 具有面向 Microsoft SQL Server 数据库的功能。它使您能够获得现有数据库架构的强类型视图。

LINQ to SQL 支持现有数据库架构与 .NET Framework 类的直接一对一映射。单个表可以映射到单个类。外键可以作为强类型关系公开。

可以通过表/视图/表值函数生成 LINQ 查询,并将结果作为强类型对象返回,还可以通过强类型方法调用返回强类型结果的存储过程。LINQ to SQL 的一个关键设计原则是它适用于大多数常见情况。因此,举例来说,如果您通过一位客户的 Orders 属性访问订单的集合,而且以前没有检索过该客户的订单,LINQ to SQL 将自动为您获取这些订单。

ADO.NET Entity Framework

ADO.NET Entity Framework 还具有面向企业应用情景的功能。在企业中,数据库通常由数据库管理员控制。架构通常可以在存储方面(性能、一致性和分区)进行优化,而不是通过公开好的应用程序模型来优化,随着时间的推移以及使用数据和使用模式的演进,该架构可能随之变化。

Entity Framework 是围绕公开面向应用程序的数据模型而设计的,这种数据模型是松耦合的,与现有数据库架构的差异可能很大。

例如,您可将单个类(或实体)映射到多个表/视图,也可将多个类映射到同一个表/视图。您可将继承层次结构映射到单个表/视图(就像在 LINQ to SQL 中那样)或多个表/视图。这种灵活的映射是以声明方式指定的,目的是在无需重新编译应用程序的条件下,适应数据库架构随着时间推移而进行的演进。

Entity Framework 包括 LINQ to Entities,它通过概念应用程序数据模型,公开很多与 LINQ to SQL 相同的功能。

相关文章