在 Visual Studio 中使用数据

在 Visual Studio 中,您可以创建应用程序,这些应用程序能够连接到几乎任何数据库产品或服务的数据,无论其格式是什么,无论位于何处——本地计算机、局域网,还是公共云、私有云或混合云。

对于 JavaScript、Python、PHP、Ruby 或C++中的应用程序,可以通过获取库和编写代码来连接到数据,就像执行任何其他操作一样。 对于 .NET 应用程序,Visual Studio 提供了可用于浏览数据源、创建对象模型以在内存中存储和操作数据以及将数据绑定到用户界面的工具。 Microsoft Azure 在 Visual Studio 中为 .NET、Java、Node.js、PHP、Python、Ruby 和移动应用以及用于连接到 Azure 存储的工具提供 SDK。

以下列表仅显示一些可从 Visual Studio 中使用的数据库和存储系统。 Microsoft Azure 产品/服务是数据服务,其中包括对基础数据存储的所有预配和管理。 Visual Studio 中的 Azure 开发 工作负载使你能够直接从 Visual Studio 使用 Azure 数据存储。

Azure 开发工作负荷

此处列出的大多数其他 SQL 和 NoSQL 数据库产品可以托管在本地计算机、本地网络上或虚拟机上的 Microsoft Azure 中。 如果在 Microsoft Azure 虚拟机中托管数据库,则需负责管理数据库本身。

Microsoft Azure

  • SQL 数据库
  • Azure Cosmos DB
  • 存储(Blob、表、队列、文件)
  • SQL 数据仓库
  • SQL Server Stretch Database
  • StorSimple
  • 更多内容...

SQL

  • SQL Server 2005-2016(包括 Express 和 LocalDB)
  • 火鸟
  • MariaDB
  • MySQL
  • Oracle
  • PostgreSQL
  • SQLite
  • 还有更多...

NoSQL

  • Apache Cassandra
  • CouchDB
  • MongoDB
  • NDatabase
  • OrientDB|
  • RavenDB
  • VelocityDB
  • 还有更多...

许多数据库供应商和第三方都支持 NuGet 包的 Visual Studio 集成。 可以通过 Visual Studio 中的 nuget.org 或 NuGet 包管理器浏览产品/服务(工具>NuGet 包管理器>管理解决方案的 NuGet 包)。 其他数据库产品作为扩展与 Visual Studio 集成。 可以在 Visual Studio Marketplace 中浏览这些产品/服务,也可以导航到 扩展>管理扩展,然后在对话框的左窗格中选择 Online。 有关详细信息,请参阅适用于 Visual Studio的兼容数据库系统

通过使用 Visual Studio Connected Services,可以简化向项目添加数据库支持的过程。

对于 SQL Server 方案,我们通过连接的服务支持:

  • 本地 SQL Server。 在此方案中,在本地网络上的某个位置安装 SQL Server 并连接到它。
  • 本地计算机上的 SQL Server。 在此方案中,在本地计算机上安装 SQL Server 并连接到它。
  • SQL Server Express LocalDB。 不安装 Visual Studio 以外的任何内容;只需连接到它即可。
  • 容器上的 SQL Server Express LocalDB。 LocalDB 与上一个选项一样,但位于本地容器中。
  • Azure SQL Server DB。 连接到在 Azure 中实时运行的服务。

对于其他与数据相关的技术,Visual Studio 2022 支持以下各项:

  • Azure 存储(本地和远程存储)
  • Azure Cosmos DB (本地和远程)
  • SQLite (仅限本地选项)
  • 容器上的 PostgreSQL(仅限本地选项)
  • 容器上的 MongoDB (仅限本地选项)

除了连接服务之外,以下列表还仅显示一些可从 Visual Studio 中使用的数据库和存储系统。 Microsoft Azure 产品/服务是数据服务,包含基础数据存储的所有预配和管理工作。 Visual Studio 中的 Azure 开发 工作负载使你能够直接从 Visual Studio 使用 Azure 数据存储。

Azure 开发工作负荷

此处列出的大多数其他 SQL 和 NoSQL 数据库产品可以托管在本地计算机、本地网络上或虚拟机上的 Microsoft Azure 中。 如果在 Microsoft Azure 虚拟机中托管数据库,则需负责管理数据库本身。

Microsoft Azure

  • SQL 数据仓库
  • SQL Server Stretch Database
  • StorSimple
  • 更多内容...

SQL

  • 火鸟
  • MariaDB
  • MySQL
  • Oracle
  • 还有更多...

NoSQL

  • Apache Cassandra
  • CouchDB
  • MongoDB
  • NDatabase
  • OrientDB|
  • RavenDB
  • VelocityDB
  • 还有更多…

备注

对 SQL Server 2005 的扩展支持已于 2016 年 4 月 12 日结束。 不能保证 Visual Studio 2015 及更高版本中的数据工具将继续使用 SQL Server 2005。

.NET 语言

Visual Studio 文档中介绍的数据访问技术使用 ADO.NET。 ADO.NET 是旧数据访问框架,不建议用于新式数据应用程序。 建议面向 .NET Core 或 .NET 5 及更高版本,并使用 Entity Framework Core 进行数据访问开发。

ADO.NET 是一组类,用于定义用于访问任何类型的数据源的接口,包括关系数据源和非关系数据源。 Visual Studio 具有多个工具和设计器,它们与 ADO.NET 配合使用,可帮助你连接到数据库、操作数据并将数据呈现给用户。 本节中的文档介绍如何使用这些工具。 还可以直接针对 ADO.NET 命令对象进行编程。 有关直接调用 ADO.NET API 的详细信息,请参阅 ADO.NET

有关与 ASP.NET 相关的数据访问文档,请参阅 ASP.NET 网站上的 数据处理。 有关将 Entity Framework 与 ASP.NET 模型-视图-控制器 (MVC) 配合使用的教程,请参阅使用 MVC 5 的 Entity Framework 6 Code First 入门

C# 或 Visual Basic 中的 Universal Windows Platform (UWP) 应用程序可以使用适用于 .NET 的 Microsoft Azure SDK 来访问 Azure 存储和其他 Azure 服务。 Windows.Web.HttpClient 类支持与任何 RESTful 服务的通信。 有关详细信息,请参阅 如何使用 Windows.Web.Http连接到 HTTP 服务器。

对于本地计算机上的数据存储,建议的方法是使用 SQLite,它与应用在同一进程中运行。 如果需要对象关系映射(ORM)层,可以使用 Entity Framework。 有关详细信息,请参阅 数据访问

如果要连接到 Azure 服务,请务必下载最新的 azure SDK 工具

数据提供者

若要使数据库可在 ADO.NET 中使用,它必须具有自定义 ADO.NET 数据提供程序,否则必须提供 ODBC 或 OLE DB 接口。 Microsoft 提供适用于 SQL Server 产品的 ADO.NET 数据提供程序列表以及 ODBC 和 OLE DB 提供程序。

备注

如果使用 Visual Studio 连接到使用 OLEDB 或 ODBC 数据提供程序的数据库,则需要注意 Visual Studio 2022 之前的 Visual Studio 版本都是 32 位进程。 这意味着 Visual Studio 中的某些数据工具只能使用 32 位数据提供程序连接到 OLEDB 或 ODBC 数据库。 这包括 Microsoft Access 32 位 OLEDB 数据提供程序以及其他第三方 32 位提供程序。

如果使用 Visual Studio 2022 连接到数据库,则需要注意 Visual Studio 2022 是一个 64 位进程。 这意味着 Visual Studio 中的某些数据工具无法使用 32 位数据提供程序连接到 OLEDB 或 ODBC 数据库。

如果需要维护连接到 OLEDB 或 ODBC 数据库的 32 位应用程序,仍可使用 Visual Studio 2022 生成和运行该应用程序。 但是,如果需要使用任何 Visual Studio Data Tools(如服务器资源管理器、数据源向导或数据集设计器),则需要使用仍处于 32 位进程的早期版本的 Visual Studio。 作为 32 位进程的 Visual Studio 的最后一个版本是 Visual Studio 2019。

如果计划将项目转换为 64 位进程,建议使用 64 位 Microsoft Access 数据库引擎(也称为 Access 连接引擎(ACE)。 有关详细信息,请参阅仅适用于 Jet 和 ODBC 驱动程序的 OLE DB 提供程序为 32 位版本

数据建模

在 .NET 中,在从数据源检索数据后,有三种用于对内存中的数据进行建模和操作的选项:

  • Entity Framework:首选Microsoft ORM 技术。 可以使用它作为一流的 .NET 对象对关系数据进行编程。 对于新应用程序,当需要模型时,它应该是默认的第一选择。 它需要底层 ADO.NET 提供程序的自定义支持。

  • LINQ to SQL:早期版本的对象关系映射器。 它适用于不太复杂的方案,但不再处于主动开发状态。

  • 数据集:三种建模技术中最旧的。 它主要用于快速开发“数据驱动的表单”应用程序,这些应用程序不会处理大量数据,也不会执行复杂的查询或转换。 DataSet 对象由在逻辑上类似于 SQL 数据库对象的 DataTable 和 DataRow 对象组成,这些对象比 .NET 对象多得多。 对于基于 SQL 数据源的相对简单的应用程序,数据集可能仍然是一个不错的选择。

不需要使用这些技术中的任何一种。 在某些情况下,尤其是性能至关重要的情况下,只需使用 DataReader 对象从数据库读取,并将所需的值复制到集合对象(如 List<T>)。

原生C++

C++连接到 SQL Server 的应用程序在大多数情况下应使用 Microsoft® ODBC Driver 13.1 for SQL Server。 如果服务器已链接,则 OLE DB 是必需的,为此你要使用 SQL Server Native Client。 可以使用 ODBC 或 OLE DB 驱动程序直接访问其他数据库。 ODBC 是当前的标准数据库接口,但大多数数据库系统提供无法通过 ODBC 接口访问的自定义功能。 OLE DB 是旧版 COM 数据访问技术,仍受支持,但不建议用于新应用程序。 有关详细信息,请参阅 Visual C++中的 数据访问。

使用 REST 服务的C++程序可以使用 C++ REST SDK

数据建模 - Visual Studio 不提供用于C++的 ORM 层。 ODB 是一种常用的开源 ORM,适用于C++。

若要详细了解如何从C++应用连接到数据库,请参阅 用于C++的 Visual Studio 数据工具。

JavaScript

Visual Studio 中的 JavaScript 是用于构建跨平台应用、UWP 应用、云服务、网站和 Web 应用的一流语言。 可以在 Visual Studio 中使用 Bower、Grunt、Gulp、npm 和 NuGet 来安装喜欢的 JavaScript 库和数据库产品。 通过从 Azure 网站下载 SDK 连接到 Azure 存储和服务。 Edge.js 是将服务器端 JavaScript(Node.js)连接到 ADO.NET 数据源的库。

Python语言

在 Visual Studio 中安装 Python 支持,以创建 Python 应用程序。 Azure 文档提供了几个有关连接数据的教程,包括:

Microsoft Azure 存储— 介绍了 Azure 存储,以及如何使用 Azure Blob、表、队列和文件创建应用程序。

Azure SQL 数据库— 介绍如何连接到 Azure SQL 数据库(关系数据库即服务)。

SQL Server Data Tools— 介绍了简化数据连接应用程序和数据库的设计、探索、测试和部署的工具。

ADO.NET- 介绍 ADO.NET 体系结构,以及如何使用 ADO.NET 类来管理应用程序数据和与数据源和 XML 交互。

ADO.NET Entity Framework- 介绍如何创建数据应用程序,使开发人员能够针对概念模型进行编程,而不是直接针对关系数据库进行编程。

WCF Data Services 4.5- 介绍如何使用 WCF 数据服务在 Web 或实现 开放数据协议(OData)的 Intranet 上部署数据服务。

Office 解决方案中的数据— 包含指向说明数据在 Office 解决方案中工作原理的主题的链接。 这包括有关面向架构的编程、数据缓存和服务器端数据访问的信息。

LINQ(语言集成查询)- 介绍 C# 和 Visual Basic 中内置的查询功能,以及查询关系数据库、XML 文档、数据集和内存中集合的常见模型。

Visual Studio 中的 XML 工具— 讨论如何使用 XML 数据、调试 XSLT、.NET XML 功能和 XML 查询的体系结构。

XML 文档和数据- 概述了一组全面的集成类,这些类适用于 .NET 中的 XML 文档和数据。