微软ASP.NET网站部署指南(2):部署SQL Server Compact数据库
1. 综述
对于数据库訪问,Contoso University程序要求以下的软件必须随程序一起部署。由于不属于.NET Framework:
- SQL Server Compact (数据库引擎)
- ASP.NET Universal Providers (启用ASP.NET membership以使用SQL Server Compact)
- Entity Framework 4.1 (Code First)
2个数据库的数据库结构和相关的一些数据都须要部署。通常。开发系统的时候都会有一些測试数据,这些測试数据跟定不能部署到生产环境。
当然,你也可能要输入一些生产环境的数据以便部署到生产环境。本章节你将配置Contoso University项目以便部署的时候包含必须的软件和数据。
提醒:假设依据本章节所做的操作出现错误信息或一些功能不正常的话。请务必check Troubleshooting页面。
2. SQL Server Compact与SQL Server Express
Sample程序使用SQL Server Compact 4.0,这个数据库引擎是web站点的新选择,SQL Server Compact旧版本号是不能用在web环境的。SQL Server Compact提供了非常多经常使用的新功能,和开发部署SQL Server Express及SQL Server一样。
取决于你选择的主机提供商,SQL Server Compact可能更廉价,由于完整版的SQL Server须要额外付费。
SQL Server Compact不须要额外的付费,由于你能够自己将这个数据库引擎作为自己程序的一部分来部署。另外一个长处是备份和还原都十分简单,由于全部的数据都在部署站点app_data目录的一个.sdf文件。
备份和还原不过copy文件而已。
只是,你依旧须要注意它的限制。
SQL Server Compact不支持存储过程、触发器、试图、复制。(对于SQL Server 2005和SQL Server 2008支持而SQL Server Compact不支持的完整功能列表。请訪问:Differences Between SQL Server Compact and
SQL Server)。还有,操作SQL Server Express 和完整版SQL Server 数据库schema和数据的一些工具也不支持SQL Compact。比如,你不能使用SQL Server Management Studio或者Visual Studio数据库项目来处理SQL Server Compact数据库。当你使用SQL Server Compact的时候,Entity Framework Code First会依据你的数据模型(data model)自己主动创建数据库。
但一旦部署以后。想保持开发环境数据库和生产环境数据库都同步的话非常难,假设有像SQL
Server Management Studio一样的工具的话就简单了。
很多其它关于部署数据库差异到SQL Server Compact数据库的信息,请查看第9章。
SQL Server Compact是个好选择,能够用Visual Studio里的Server Explorer工具进行管理(本系列教材会将用到)。可是假设在初始部署以后须要常常改变的话,那使用SQL Server Compact 维护的成本可就大了。
你能够先用SQL Server Compact 然后再升级,后面的章节将告诉你怎样将SQL Server Compact迁移到SQL Server Express或者完整版SQL Server。
当然。假设你正在创建新的程序然后期望以后升级至完整版SQL Server,最好的选择是使用SQL Server Express。
3. 配置SQL Server Compact数据库引擎
Contoso University程序数据訪问须要的软件能够通过使用以下的NuGet包来安装:
- SqlServerCompact
- System.Web.Providers (ASP.NET universal providers)
- EntityFramework
- EntityFramework.SqlServerCompact
NuGet包已经帮你安装了全部该程序所须要的东西。有时候,它能改动Web.config文件或者加入build方案是须要执行的PowerShell脚本。假设你不想使用NuGet安装这些东西,你须要了解NuGet包安装的时候做的事情。以便能够手工做这些事情。
有个问题须要注意,SqlServerCompact NuGet包会加入一个post-build脚本到你id项目,以便copy原生的assemblies到bin目录下的x86 和amd64 子目录。可是项目默认是没有这些子目录的,结果就是在部署的时候这些文件不会copy到目标网站,须要手工来做这些事情。
(默认的部署配置就是这种,另外一个选择(该教程没有使用)。你能够改动配置行为来达到目的,请查看Configuring
Project Properties 来获取资料。
不推荐这样做。由于部署的时候会带给生成环境非常多文件。)
Solution Explorer里。点击查看全部文件Show all Files (假设还没点的话)。可能还须要点击刷新Refresh。

展开bin目录能够看到有amd64和x86子目录,选择这2个目录。然后右键选择包括到项目里Include in Project。

这时候。目录的图标会变回正常的,代表已经包括到项目里了。

4. 创建程序数据库
一般部署数据库的时候。都不会把开发库的全部数据都部署到生产环境,由于非常多数据都是測试用的。比如。測试库里的学生姓名都是虚构的。
另外一方面,也不能只只部署数据库结构而一点数据都不部署。
一些測试数据有可能是生产环境用到的真实数据,比如,数据库表里包括的年级值或真实的部门名称。
能够创建一个和开发环境不同版本号的数据库。一些表包括数据,一些表不包括数据。
以下的图显示的是数据库的结构:

该教程假定第一次部署的时候。Student和Enrollment表是空的。
其他的表上线的时候包括了一些预装载数据。以下的步骤告诉你怎样用Visual Studio的SQL Server工具删除測试数据(你不必保存測试数据由于Entity Framework Code First初始化类的时候会自己主动生成这些数据)。
SQL Server Compact数据库包括了App_Data目录的.sdf文件。
Solution Explorer里。展开App_Data目录能够看到2个SQL Server Compact数据库.sdf文件。

这里是你的开发库,教程结束的时候你会有4个数据库,当中开发环境2个,生成环境2个。为了标记清楚哪个是开发环境或生成环境,你能够重命名数据库名称:开发环境的aspnet-Dev.sdf 和School-Dev.sdf,生产环境的aspnet-Prod.sdf和School-Prod.sdf。
開始改动School.sdf数据库以便仅仅包括部署到生产环境的数据(后面的章节将重命名为School-Prod.sdf)。
Solution Explorer里。双击Server Explorer上的School.sdf数据库。

Server Explorer里,展开School.sdf数据库。然后展开Tables。

在Enrollment上点击右键,选择Show Table Data,然后选择全部数据行,删除。

弹出确认删除框的时候。点击Yes。

相同的步骤能够删除Person表里的数据(仅限于EnrollmentDate列为null而且Discriminator列位“Student”的数据)。

Server Explorer里,School.sdf上点击右键选择Close Connection。
School.sdf已经能够部署了。
5. 创建Membership数据库
Contoso University程序使用了ASP.NET membership和Form验证来验证和授权用户。
当中有一个页面仅仅能让administrators訪问,查看这个页面,请执行程序。选择Courses选项连接下的Update Credits,程序将跳转到Login页面,由于这个页面仅仅授权给了administrators。

使用账户"admin"和password"Pas$w0rd"(当中的0是数字0。而不是字符o)登陆以后。你将能够看到Update Credits页面。

第一次部署网站的时候,通常须要排除全部的測试账户。
这里,我们须要部署的数据仅须要一个administrator账户而非其他的用户账户。与其手工删除这些測试账户。不能够创建一个新的membership数据库。而且值包括一个生产环境用到的administrator账户。
这里没有自己主动添加种子值(由于这是为School数据库创建的新库)。假设你想再部署以后继续保持測试数据以便继续开发。那就须要事先备份一下測试数据库。
Solution Explorer里。重命名App_Data 目录下的aspnet.sdf 文件为aspnet-Dev.sdf。
(不要复制。不过重命名——一会你会再创建一个新数据库)。
从Project菜单,选择ASP.NET Configuration 执行Web Site Administration Tool (WAT)。然后选择Security选项卡。

点击Create or Manage Roles然后加入一个Administrator角色。

导航到Security选项卡,点击Create User然后加入用户"admin"作为一个administrator。
点击Create User 页面上的Create Userbutton之前,确保你选上了右边的Administrator check box以便将用户设置成Administrator角色。
教程里用到的password是: "Pas$w0rd",你能够输入随意email地址。

关闭浏览器。返回Solution Explorer,点击刷新refreshbutton你将看到新建立的aspnet.sdf文件。

右键aspnet.sdf文件,选择Include in Project将它包括到项目里。
6. 重命名生产环境数据库
没有必要为生产环境重命名数据库,可是假设这样做了。解决方式将会更加清晰:
重命名aspnet.sdf为aspnet-Prod.sdf
重命名School.sdf为School-Prod.sdf

这样。这两个数据就能够部署了
7. 为开发环境设置连接字符串
当你在Visual Studio里执行程序的时候,肯定不能用-Prod版本号的数据库。而是要用-Dev版本号的数据库,这时候你就须要改动Web.config文件中的数据库连接字符串,使之指向到-Dev版本号的连接地址。
(你还没创建School-dev.sdf文件。没事!
,由于Code First会检查你有没有数据库,假设没有会自己主动帮你创建的,你所须要做的就是填写数据库的名称)。
打开Web.config文件。找到connection strings节点:
<configuration>
<!-- Settings -->
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet.sdf" providerName="System.Data.SqlServerCe.4.0"/>
<add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
<!-- Settings -->
</configuration>
将"aspnet.sdf"改成"aspnet-Dev.sdf"。然后将"School.sdf" 改成"School-Dev.sdf":
<configuration>
<!-- Settings -->
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet-Dev.sdf" providerName="System.Data.SqlServerCe.4.0"/>
<add name="SchoolContext" connectionString="Data Source=|DataDirectory|School-Dev.sdf" providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
<!-- Settings -->
</configuration>
执行程序,然后訪问一个页面(比如:Students页)让它来訪问数据库。它将导致Code First 代码创建一个新数据库School-Dev.sdf。点击Solution Explorer里的Refresh,你能够发现这个数据库。右键该数据库选项Include in project将它包括到该项目。

SQL Server Compact数据库引擎和2个生产环境的数据库都已经准备好能够部署了。下一章内容将知道你怎样自己主动设置Web.config的transformations ,一般为开发、測试、生产环境自己主动设置不同的參数。
(当中就有设置开发和生产环境里都用到的数据库连接字符串)。
微软ASP.NET网站部署指南(2):部署SQL Server Compact数据库的更多相关文章
- 微软ASP.NET网站部署指南(10):迁移至SQL Server
1. 综述 第2章的部署SQL Server Compact和第9章的部署数据库更新里解释了为什么终于要升级到完整版SQL Server .本章节将告诉你怎样来做. SQL Server Expre ...
- 微软ASP.NET网站部署指南(8):部署Code-Only更新
1. 综述 初始化部署以后,你须要继续维护和更新你的网站.本章节将向你展示一个不包含数据库改变的部署升级流程.(下一章节将展示数据库改变的部署升级流程.) 提醒:假设依据本章节所做的操作出现错误信息 ...
- 微软ASP.NET网站部署指南(9):部署数据库更新
1. 综述 无论什么时候,程序都有可能像代码更新一样更新数据库.本章节你将进行数据库改动,測试.然后部署到測试环境和生产环境. 提醒:假设依据本章节所做的操作出现错误信息或一些功能不正常的话,请务必 ...
- 微软ASP.NET网站部署指南(4):配置项目属性
1. 综述 有些部署设置能够在项目属性里设置的,而且保持到项目文件中(.csproj或.vbproj). 大多数情况下.你都能够在Visual Studio 选择项目属性Project Proper ...
- SQL Server Compact 3.5环境部署<转>
通过使用 Microsoft Visual Studio 开发环境,可以开发使用 SQL Server Compact 3.5 的应用程序.Visual Studio 是开发和部署使用 SQL Ser ...
- SQL Server 2008 数据库镜像部署实例之三 配置见证服务器
SQL Server 2008 数据库镜像部署实例之三 配置见证服务器 前面已经完成了镜像数据库的配置,并进行那个了故障转移测试.接下来将部署见证服务器,实现自动故障转移. 一.关于见证服务器 1.若 ...
- SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移
SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移 上一篇文章已经为配置镜像数据库做好了准备,接下来就要进入真正的配置阶段 一.在镜像数据库服务器上设置安全性并启动数据 ...
- SQL Server 2008 数据库镜像部署实例之一 数据库准备
SQL Server 2008 数据库镜像部署实例之一 数据库准备 一.目标 利用Sql Server 2008 enterprise X64,建立异步(高性能)镜像数据库,同时建立见证服务器实现自动 ...
- SQL Server Compact免安装部署
原文:SQL Server Compact免安装部署 情况 应用程序中的EF使用了SQL Server Compact,打包部署到客户机器上后提示数据库连接异常,信息类似”配置节“.”Provider ...
随机推荐
- mac重装系统
通过 macOS 恢复功能启动macOS 恢复功能会根据您在电脑启动时按下的组合键来安装不同版本的 macOS.在按电源按钮打开 Mac 后,立即按住以下组合键之一.然后在看到 Apple 标志或旋转 ...
- qsort函数以及sort函数使用方法
sort函数的使用方法 做ACM题的时候,排序是一种常常要用到的操作. 假设每次都自己写个冒泡之类的O(n^2)排序,不但程序easy超时,并且浪费宝贵的比赛时间,还非常有可能写错. STL里面 ...
- 关于SVN提交时报out-of-date错误的解决方法
提交项目文件时,报如下的信息:Item is out-of-datesvn: Commit failed (details follow):svn: Item '/xxx/xxx/xxx/xxx/xx ...
- java执行shell/cmd命令
try { Process p =Runtime.getRuntime().exec("chmod 777 /home/bomb/MoveToy/WebRoot/a.sh " ); ...
- VBA学习笔记(6)--抽取第一列中叫“虹虹”的个人信息
说明(2017.3.25): 1. 知识点为dim arr2(1 to 1000, 1 to 4)先定义一个足够大的二维数组,不然后面需要transpose转置成一维数组. '抽取列表中叫“虹虹”的所 ...
- hdu 5215 Cycle
题意:找到一个图中是否含有奇环和偶环 题解: 1.用了两种发法.一个就是跟bc给的答案一样,先求弱联通分量.再在环中找奇偶环 2.我想到的一个略微省些代码量的方法.边求联通分量,边推断是否含有奇环偶环 ...
- Cent OS 6.5下安装gcc-5.3.0
目录: .下载源码包 .安装以前版本的GCC编译器 .文件传输 .熟悉解压命令 .安装流程 .开始安装 .安装必备包之GMP,MPFR,MPC的安装 .继续安装 [1.下载源码包] ...
- Spring使用facotry-method创建单例Bean总结<转>
阅读目录 1 最原始的实现单例模式的方法(存在线程不安全): 2 通过关键字Synchronized强制线程同步 3 通过静态内部类进行单例 通过spring的factory-method来创建 ...
- 使用C#创建windows 服务
创建项目选择Windows Service 创建好项目之后,在生成的Service1.cs的设计页面右键选择Add Installer,会生成一个ProjectInstaller.cs.这个文件中有两 ...
- HDFS入门
HDFS入门 欢迎关注我的个人博客:http://www.cnblogs.com/yjd_hycf_space 更多大数据以及编程相关的精彩文章 为什么我们需要HDFS 文件系统由三部分组成:与文件管 ...