LINQ to SQL (SQL Server Compact)

语言集成查询 (LINQ to SQL) 是 .NET Framework 3.5 的组件,提供了运行时基础结构,用于将关系数据作为对象进行管理,同时又不会丢失查询的能力。LINQ to SQL 通过将语言集成查询转换为由数据库执行的 SQL,再将表格结果转换回您所定义的对象实现此功能。然后您的应用程序就可以随意更改对象,而 LINQ to SQL 就会停留在后台对更改进行自动跟踪。

LINQ to SQL 运行时基础结构和设计时工具结合在一起使用,可大大减少数据库应用程序开发人员的工作量。LINQ to SQL 具有语言无关性。任何为提供语言集成查询而生成的语言都能够使用它对存储在关系数据库中的信息进行访问。

备注

关系数据显示为二维表(关系或平面文件)的集合,在此集合中公共列将表互相关联起来。若要有效地使用 LINQ to SQL,您必须对关系数据库的基本原则有一定的了解。

SQL Server Compact 中的 LINQ to SQL

默认情况下,所有的 Microsoft Visual Studio 2008 版本都安装了 SQL Server Compact 3.5,并且后者在所有的开发计算机上都可与 LINQ to SQL 协同工作。但是,使用 SQL Server Compact 3.5 和 LINQ to SQL 的应用程序部署与部署 SQL Server 应用程序的过程有所不同。这是因为 SQL Server Compact 3.5 是嵌入式数据库,它将提供程序与引擎一起打包。

SQL Server Compact 3.5 与 SQL Server 相似,因为它必须从 .NET Framework 单独安装。但是,SQL Server Compact 3.5 可以采用私有方式部署或嵌入到应用程序中。这使本地数据的使用对应用程序安装要求透明。您可以将 SQL Server Compact 3.5 嵌入应用程序或使用 SQL Server Compact 3.5 Windows Installer 文件 (SSCERuntime-<lang>.msi)。

SQL Server Compact 3.5 可打包为一组 DLL 文件,直接与数据库文件 (.sdf) 一起使用。SQL Server Compact 3.5 DLL 文件很小,这就缩小了整个应用程序的大小。 嵌入式部署不要求添加本地数据存储功能的管理权限。

SQL Server Compact 3.5 中的 LINQ to SQL 功能的优点包括以下几个方面: 

  • 熟悉的查询编写 SQL Server 语法。

  • 编译时检查语法错误和类型安全。

  • 改进的调试器支持。

  • IntelliSense 支持。

  • 强大的筛选、排序和分组功能。

  • 用于跨多种数据源和数据格式处理数据的一致模型。

与 SQL Server 的差异

SQL Server Compact 3.5 功能集提供了与本地嵌入式数据方案相关的其他 SQL Server 版本的丰富子集。通过使用嵌入式部署,SQL Server Compact 3.5 支持丰富功能集,以跨所有 Microsoft 客户端(从设备到桌面)保持本地数据方案的一致性。SQL Server Compact 3.5 中的 LINQ to SQL:

  • 支持 LINQ to SQL 运行时和 SQLMetal 命令行工具。

  • 支持 SQL Server 数据类型和函数的丰富子集。

  • 支持与本地数据方案相关的 SQL 构造的丰富子集。

  • 查询优化器主要针对与本地数据方案相关的查询,如果 LINQ to SQL 查询映射到 SQL 查询时过于复杂可能会出现超时。

  • 不支持存储过程或视图。

  • 不支持对象关系设计器。

  • 不支持部分信任。

若要在 SQL Server Compact 3.5 中优化 LINQ to SQL 的性能,应使用 LINQ to SQL 编译过的查询功能预创建 Transact-SQL 查询。已编译查询应该用于您能够应用之处。另外,不需要更新时,LINQ to SQL DataContext 应该在只读模式下使用。若要设置 DataContext,请使用下面的语句:

DataContext.ObjectTrackingEnabled=false

请参阅

其他资源

LINQ to SQL

语言集成查询 (LINQ)