微软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 ...
随机推荐
- 使struct对象拥有可变大小的数组——(C++深度探索)
首先摘录<Inside The C++ Object Model>中的一段话: 把单一元素的数组放在一个struct的尾端,于是每个 struct objects 可以拥有可变大小的数组: ...
- Javascript玩转继承(二)
对象伪装来实现继承.在这里先来说一下这种方式的优缺点 这种方式是比较容易理解的,在子类中调用父类的构造函数.另外,这种方法最大的一个优点就是说构造继承可以实现多继承,复习下这个代码: function ...
- 在ModelSim中添加Xilinx仿真库
在ModelSim中添加Xilinx仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\Mode ...
- 【Android】3.23 示例23--瓦片图功能
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 地图SDK自v3.6.0起,新增瓦片图层(tileOverlay), 该图层支持开发者添加自有瓦片数 ...
- [Linux]运维三十六计--腾讯两位大神的总结
这里是腾讯两位大神梁定安.周小军总记得运维DBA三十六计,So有道理
- codeforces 482B. Interesting Array【线段树区间更新】
题目:codeforces 482B. Interesting Array 题意:给你一个值n和m中操作,每种操作就是三个数 l ,r,val. 就是区间l---r上的与的值为val,最后问你原来的数 ...
- .NET Garbage-Collectors
http://mattwarren.org/tags/#Garbage-Collectors https://github.com/dotnet/coreclr/issues https://lldb ...
- thread-local-allocation-buffers
https://www.azul.com/files/Whats-inside-a-JVM-webinar-presentation.pdf https://www.zhihu.com/questio ...
- Zookeeper已经分布式环境中的假死脑裂
Zookeeper简介 在上班之前都不知道有这样一个东西,在开始说假死脑裂之前先说说Zookeeper吧. Zookeeper zookeeper是一个分布式应用程序的协调服务.它是一个为分布式应用提 ...
- ubuntu下超强的截图工具scrot
Scrot ,是一个命令行下使用的截图工具,支持全屏.窗口.选取.多设备.缩略图.延时,甚至可以截图完毕之后指定某程序打开截好的图片. 终端安装: sudo apt-get install s ...