首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

2.1.7  使用数据库项目

数据库项目用于保存SQL脚本、查询和存储过程。数据库项目常常是Visual Studio中开发人员不太知道的一个特性,除非有人告诉他们。不要混淆数据库项目与SQL Server项目(详见本章下一节),数据库项目用于保存SQL脚本,而SQL Server项目用于保存在Microsoft SQL Server上运行的CLR托管代码。

如果当前没有使用数据库项目保存脚本和存储过程,就将它们保存在文件中,再将它们应用于SQL Server。如果这么做很危险,可以只把最初的副本保存在SQL Server中。

为保存存储过程和其他SQL脚本而使用数据库项目,一个很显著的优点是项目可以包含在Visual Studio解决方案中。这样,就很容易在主项目文件和数据库项目之间切换,来访问存储过程了。另外,在搜索时,项目很容易包含在搜索结果中。最后一个优点是,可以集成Visual Studio支持的源代码控制,在存储过程和SQL脚本上进行版本控制。

很容易在本章前面创建的解决方案中添加一个数据库项目。使用File | New Project,扩展Other Project Types部分。然后选择Database类别。这样Database Project模板就会显示在模板列表中,如图2-3所示。

图  2-3

如果使用默认模板,在建立项目时就会创建几个初始文件夹。这些文件夹非常基本,其名称是Queries、Create Scripts等。这些都是初始名称,不需要使用它们。实际上,使用对应用程序有意义的名称,会使项目更有用,更便于维护。

在使用存储过程时,一种方法是把存储过程放在与数据库域对象相关的文件夹中。例如,如果有几个与地址相关的存储过程,就可以创建一个Address文件夹,把这些存储过程存放在该文件夹中。一定要注意,项目提供了一个文件夹层次结构,可用于给脚本分类,一旦脚本运行起来,应用于数据库,这种分类特性就会丧失。在开发过程中,无论存储过程是否位于有意义的文件夹层次结构中,SQL Server都没有文件夹的概念,所以给SQL Server添加了内容后,都只会看到一个大大的列表。

刚才讨论的是把什么代码放在哪个文件夹中,另一个要考虑的重要问题是:是否有非存储的过程脚本也存放在项目中,例如,创建/删除表的脚本或刷新表中数据的脚本。如果决定把它们也存储在数据库项目中,而且将它们存放在存储过程所在的文件夹下,它们就有可能在不正确的时间运行。这是以前在晚上测试备份的一个绝妙方式。这是如何发生的?数据库项目的一个特性是,它可以选择文件夹中的一项,单击“run”或“run on”,在目标数据库上运行脚本。如果把删除/创建脚本混入文件夹,而不知情的团队成员选择所有的项,在数据库上运行它们时,会认为自己只是把存储过程添加到数据库中。他们在发现备份时会非常惊讶!

1. 添加数据库引用

把数据库项目添加到解决方案中时,向导会启动Add Database Reference对话框,如图2-4所示,提示选择一个数据库引用。在数据库项目的一项上执行操作时,要使用这个引用。使用数据库项目不要求必须有引用,所以可以取消这个对话框,现在不选择引用。该引用可以在将来的任何时刻添加或删除。也可以有多个引用,在数据库项目的一项上执行操作时选择一个激活的引用。

图  2-4

如果添加一个新引用,就要提供一些信息,例如服务器名。另外,还要选择验证类型,是否要存储用户和密码。如果可能,在团队环境下工作时,Windows验证提供了一种互不干扰的方式。如果选择使用用户和密码,但不允许存储它们,则每次打开项目时,都要提供用户和密码。

2. 添加已有的脚本

右击一个文件夹,选择Add Existing,就可以把已有的脚本添加到数据库项目上。如果脚本位于另一个位置,就把它们的副本放在目标文件夹中。

如果已有的脚本不在文件中,就可以利用SQL Server管理工具的Generate Script功能。确保选择把每个对象放在单独文件中的选项。如果所有的对象都在一个文件中生成,数据库项目提供的许多优势就会丧失。一定要把文件生成为Windows文本,而不是ANSI,否则,脚本中就会有乱码。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论