在Visual Studio 11的LightSwitch应用程序中使用SQL Server LocalDB


[原文发表地址]  Working with SQL Server LocalDB in LightSwitch Projects in Visual Studio 11

[原文发表时间] 2012-04-19 16:10

说明:本文适用于Visual Studio 11 Beta中的LightSwitch (LightSwitch V2)

Visual Studio LightSwitch中,当你通过数据设计器设计数据模型时,你不是在创建新的表就是在连接到外部数据源。当你创建新表时,LightSwitch 会自动在内部数据库中创建它们,这也被称为内在数据库或ApplicationData。在 Visual Studio 2010 中的 LightSwitch 的第一个版本中,我们将 SQL 2008 Express用于内部数据库开发。现在Visual Studio 11中的LightSwitch,我们则使用SQL Server LocalDB。(注: LocalDB 仅在开发过程中使用。当你部署你的应用程序时,你可以选择部署到SQL Server的任何版本。)

LocalDB 是SQL Server Express的新版本,它占用更少的内存,是为开发人员而设计的。当你安装 Visual Studio 11 时,它会自动为你安装。当开发LightSwitch 项目时,LocalDB 用于替换SQL Server Express 用户实例功能(现在不建议使用它)。在这篇文章中,我将为你们展示一些在LightSwitch项目中使用 LocalDB 数据库的技巧。

在 Visual Studio 11中的SQL Server Object Explorer

在Visual Studio 2010中,你使用Server Explorer来访问你的 SQL Express 数据库。Visual Studio 11中仍然有Server Explorer,但还有一个称为SQL Server Object Explorer的新窗口,你可以用它来使用你的 LocalDB。SQL Server Object Explorer能够让你查看数据库对象,这类似于 SQLServer Management Studio。

image

若要连接到你的 LocalDB ,单击工具栏上的"添加 SQL Server"按钮来显示连接对话框。服务器名称是:localdb)\v11.0

image

一旦你首次调试 (F5)你的 LightSwitch 项目,内部的ApplicationData数据库将会显示在Databases节点下。LocalDB 将会自动附加到第一次访问的数据库中。

重要说明:如果你只开发LightSwitch 项目中的新表,你永远不会需要使用此窗口,因为你是通过 LightSwitch 数据设计器来构建数据的。事实上,如果你在数据设计器的外部修改内部数据库的架构,LightSwitch 模型将会同步失调,所以你在运行应用程序时,将会出现错误。我重复一遍,请不要在数据设计器的外部修改LightSwitch内部数据库

然而,SQL Server Object Explorer非常便于使用你想要引入到LightSwitch应用程序中的外部数据库。在开发过程中,使用外部数据库的本地拷贝是常见的,而且 SQL Server Object Explorer便于管理这些文件。我最喜欢的功能之一是架构比较。关于SQL Server Object Explorer功能的详细信息,请参阅:Visual Studio 11 beta 版中数据应用程序开发的新功能

请记住外部数据库只是 — — 它们只是在 LightSwitch 的外部。因此,你必须完全在LightSwitch 开发环境之外管理其架构和部署。关于连接到外部数据源的详细信息,请参阅-如何:连接到数据

使用 SQL Server Object Explorer将数据库附加到 LocalDB

这儿有许多示例,在SQL Server的各种版本中,此功能带来了很多便利:你可以将其附加到数据库文件(.MDF)中 ,它会自动将你的数据库升级到当前版本,并将其附加到你的 LocalDB 实例中。这样使得连接和针对LightSwitch 中的外部数据库开发更容易。(注意如果你升级了数据库,它将不再与SQL Server的早期版本相兼容)。

让我们看一个例子。

如今,AdventureWorks 示例数据库家庭常用于微软的许多现代数据库示例中。它们展示了SQL Server 最新版本的功能和能够在CodePlex 上维护它们。你可以在这里下载。在这里有一个称为 AdventureWorksLT(AdventureWorks"Light"),的简单数据库,它对开发人员学习数据来说很不错,因为它有一个更简单的架构。

附加 AdventureworksLT 数据库:

  1. 当你下载AdventureWorksLT2012 数据文件后,为你的本地数据库创建一个文件夹(如 C:\Data),将 AdventureWorksLT2012_Data.MDF 文件复制到该位置。
  2. 在SQL Server Object Explorer中,右击你的 LocalDB 实例,并选择"新的 Query…"来打开新的 SQL 查询编辑器。
    image
  3. 在查询编辑器中,键入以下命令:
  4.    1: USE [master] 
       2: GO 
       3: CREATE DATABASE [AdventureWorksLT] ON 
       4: ( FILENAME = N'C:\Data\AdventureWorksLT2012_Data.mdf' ) 
       5: FOR ATTACH ; 
       6: GO

  5. 单击工具栏中的 (Ctrl + Shift + E) 执行按钮来执行该命令。你将看到一条文件激活失败的消息,并会生成一个新的日志文件 (.LDF)。你还可能会看到一些升级的消息,这取决于你的 LocalDB 版本。这些提示都是正常的。
  6. 刷新 SQL Object Explorer中的Databases节点,现在,你将会看到 附加的AdventureWorksLT 数据库。此外,你还将看到你正在使用的任何 LightSwitch 内部数据库。image

 

通过使用 SQL 查询编辑器,你还可以执行其他的SQL 脚本来创建和使用你的数据库。但是,你也可以使用Server Explorer来通过一个向导附加到数据库中,这在Visual Studio 2010 中也是可用的。有关信息,请参见-如何:连接到基于文件的数据库。

使用 LocalDB Database 作为LightSwitch中的外部数据源

一旦你附加了你的数据库,将它们添加为外部数据源变得很简单。

  1. 在你的 LightSwitch 项目的Solution Explorer中,右键单击Data Sources节点,并选择"添加数据源" image
  2. 这将打开附加数据源向导,在此向导中你可以选择各种外部数据源类型。选择数据库,然后单击下一步。image

  3. 在连接属性对话框中,将服务器名称设置为(localdb)\v11.0,然后选择你想要的数据库。请注意,在这里你还可以附加到数据库文件中。这将会有与上面的附加步骤相同的效果。
  4. image

  5. 在那里,你可以选择你想要引入到 LightSwitch 应用程序中的表和视图。

为外部数据源同步架构的更改

LightSwitch 数据设计器将不允许你更改外部数据源的基础架构。相反,你可以使用 SQLServer Object Explorer(或任何其他你最喜欢的数据库工具)进行更改。当你修改外部数据源的架构时,你需要将这些更改带回到 LightSwitch中(记住不要通过这种方式修改你的内部数据库)。

若要同步所做的更改,在Solution Explorer中,右键单击外部数据源,并选择"更新数据源"。

image

选择LightSwitch 应用程序中正在使用的所有表,然后单击完成,然后所做的更改都将在数据设计器中反映出来。

image

总结

SQL Server LocalDB比SQL Server Express的以前版本占用了较少的内存,仍然提供了自动附加数据库来加快开发基于数据的项目。对于外部数据库,SQL Server Object Explorer是Visual Studio的一个很受欢迎的增添项,并与SQL Server Management Studio的体验类似。但是,请记住你只能通过 LightSwitch 数据设计器更改你的内部数据库(ApplicationData)。

当在 LightSwitch 中使用内部数据库时,LocalDB 仅在开发过程中使用。当你部署使用了内部数据库的应用程序时,你可以选择将其部署到的 SQL Server的任何版本中。此外,如果你在LightSwitch 应用程序中使用外部数据源,一旦部署后,你会被要求提供产品数据库的连接字符串。关于部署 LightSwitch 应用程序的详细信息,请参阅MSDN 库中的部署 LightSwitch 应用程序以及我的帖子 Visual Studio 11中 LightSwitch IIS 部署功能的增强

希望大家喜欢!

Comments (1)

Skip to main content