LocalDB简介和在VS2012及以上版本的使用
http://www.cnblogs.com/fzrain/p/3812364.html?utm_source=tuicool
LocalDB简介和在VS2012及以上版本的使用
之前一不小心把自己电脑上的SQL Server弄换了,卸载之后没立即重装,于是乎研究了一下LocalDB,感觉还不错,特别是个人做开发或测试的时候,所以记录下来并分享给大家。OK,下面开始正题:
什么是LocalDB?
随着SQL Server 2012的发布,LocalDB跃入我们的视线,它可以被看做是SQL Server Express的轻量级版本。
LocalDB专门为开发人员创建,它非常易于安装,几乎无需管理,兼容T-SQL语言,编程接口与SQL Server Express别无二致。
有了LocalDB,开发人员就不需要在自己的笔记本上安装和维护一个庞大的SQL Server实例了。另外,LocalDB也适用于小型应用环境,开发人员可以将其用于小型生产环境或者嵌入式环境。
LocalDB的核心技术特性
- 兼容其它SQL Server版本,使用sqlservr.exe作为服务进程,使用相同的客户端访问接口(如ADO.NET、ODBC或PDO),兼容T-SQL编程语言。
- 在同一台计算机上不必安装多个LocalDB,不同的应用程序可以并行执行多个LocalDB进程,但所有的进程都是从同一个可执行文件(sqlservr.exe)启动的。
- LocalDB不会创建任何系统服务,LocalDB进程会根据需要自动启动、停止。应用程序只需连接“Data Source=(localdb)\v11.0”,LocalDB就会作为应用程序的子进程启动。随着连接的终止,LocalDB进程也会随之停止。
- LocalDB支持AttachDbFileName属性,允许开发者指定数据库文件位置。例如:
Data Source = (localdb)\v11.0; Integrated Security = true; AttachDbFileName = C:\MyData\Database1.mdf
在Visual Studio中使用LocalDB
使用LocalDB需要VS的版本在2012或以上。我这里演示将使用Entity Framework的Code first模式。
第一步:创建一个控制台应用程序:
第二步:使用NuGet添加对Entity Framework的引用:
第三步:创建实体和DbContext:

public class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public string Category { get; set; }
}
class EFDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}

最后一步(也是最关键的):修改App.config配置文件中的连接字符串:
<connectionStrings >
<add name="EFDbContext" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=SportsStore;Integrated Security=SSPI;AttachDBFilename=E:\SportsStore.mdf" />
</connectionStrings>
这里Data Source的值就是指定LocalDB的一个实例。在这个连接字符串中还有一个AttachDBFilename属性,这是用来指定数据库文件(包括.mdf以及日志文件)的路径,我这里放在E盘根目录下,如果没有指定,数据库就会创建到默认地址(C盘你的用户)下。其他属性相信大家都不陌生。
测试成果:在Program.cs的main函数中添加以下代码:

using (var context=new EFDbContext())
{
context.Set<Product>().Add(new Product { Price = 1, Name = "p1", Category = "a", Description = "无" });
context.SaveChanges();
List<Product> products= context.Set<Product>().ToList();
foreach (Product p in products)
{
Console.WriteLine(p.ProductID +" "+p.Name +" "+p.Price);
}
}
Console.ReadKey();

运行调试:
在本地磁盘E的根目录下会出现以下文件:
在VS中的SQL Server对象浏览窗口也可以看到:
总结
LocalDB相比SQL Server要轻量很多,虽说提供的功能不是很多但对于很多开发和测试人员来说足够了。使用起来也是极其方便的,只需要修改一下连接字符串,我们的程序该怎么写还是怎么写就行了。
参考链接:http://www.csdn.net/article/2012-03-29/313675
http://www.cnblogs.com/zhangran/archive/2012/08/26/2657864.html
LocalDB简介和在VS2012及以上版本的使用的更多相关文章
- pyenv简介——Debian/Ubuntu中管理多版本Python
pyenv简介——Debian/Ubuntu中管理多版本Python MAY 21ST, 2016 12:00 AM | COMMENTS pyenv是管理Python版本的工具,它支持在多个Pyth ...
- VS2012与windos版本不兼容问题
昨天晚上加完班,想着把windows更新下.今天上午就发现再运行VS报错了,提示VS2012与windows版本不兼容,打开.sln文件后,VS自动关闭.错误如下: 查看后网上提示安装VS2012的一 ...
- vs2012中使用localdb实例还原一个sql server 2008r2版本的数据库
use localdb sometime is easy than sql server ,and always use visual studio make you stupid. vs2012中还 ...
- VS2012及以上版本 程序打包部署详解
引用: http://blog.csdn.net/zhang_xinxiu/article/details/9099757 程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的 ...
- 在VS2012后的版本中做数据报表时,提示尚未指定报表“Report1”的报表定义
有一群的朋友在用VS2012做数据报表时,老是提示 本地报表处理期间出错. 尚未指定报表“Report1”的报表定义 未将对象引用设置到对象的实例. 我看了一下,步骤没错,我用VS2010做了一下,一 ...
- VS2012编译VS2010版本的过程报错解决
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32C:\Program Files\MSBuild\Microsoft C:\Pro ...
- Visual Studio解决方案vs2005/vs2008/vs2010/vs2012/vs2013/vs2015版本互相转换工具
原文:http://blog.csdn.net/xiejiashu/article/details/52397641 本文转自EasyDarwin团队成员Alex的博客:http://blog.c ...
- vs2012打开低版本项目时 出现vs2012警告未能加载包“visual c++ package 解决办法
vs2012 打开 vs2010 项目时 提示的 错误信息. 解决办法 是下载一个 vs2012的 一个补丁包 http://www.microsoft.com/en-us/download/deta ...
- vs2012,打开早期版本窗体错误
<runtime> <NetFx40_LegacySecurityPolicy enabled="true"/></runtime>
随机推荐
- 在centos下部署docker内网私服
Docker内网私服:docker-registry with nginx & ssl on centos docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已 ...
- Myeclipse+maven时Tomcat部署时maven的依赖文件不能部署到Tomcat上
解决办法:
- 17Spring_AOP编程(AspectJ)_AspectJ的注解编程
前面的各种Aop编程,都是基于XML的,这篇文章讲的是把XML方式改为注解方式来做. Spring注解开发和xml开发所需要的包是一样的,所以只要把xml开发方式的包复制到以注解为开发方式的包的项目下 ...
- 用 eric6 与 PyQt5 实现python的极速GUI编程(系列03)---- Drawing(绘图)(2)-- 画点
[概览] 本文实现如下的程序:(在窗体中绘画出[-100, 100]两个周期的正弦函数图像) 主要步骤如下: 1.在eric6中新建项目,新建窗体 2.(自动打开)进入PyQt5 Desinger,编 ...
- 解决SaveChanges会Hold住之前的错误的问题
问题描述: 在一次新增操作中,由于有一个必填字段忘记写了,然后直接点击提交,运行到savechanges的地方,程序报错,提示***字段为必填字段. 然后关掉页面,重新填写一次,这次什么都填写上了,一 ...
- Android强制弹出,隐藏输入法.
当我们弹出一个Dialog时候,如果这个Dialog需要输入数据,然后确定后又需要关闭输入法,一般系统的hide,跟show方法总会有各种问题,最霸道的解决方法就是写一个定时器,定时弹出或者关闭输入法 ...
- matlab数据转换为字符串并合并字符串标注到图像曲线上
1.把数字转换为字符串 [函数描述]str=num2str(A):把数组A中元素取小数点后四位,并转换为字符串. [函数实例]把数字转换为字符串,输入语句: str1=num2str(pi) str2 ...
- QT cannot open output file debug\OpencvTest.exe: Permission denied
问题:调试运行QT的时候遇到这个问题,发现时是由于没有正常关闭程序所致,导致后台有之前运行的程序在跑(电脑环境win7 64 Qt5.2.1 opencv2.4.6). 目前解决办法:手动关闭已在运行 ...
- javascript中prototype、constructor以及__proto__之间的三角关系
三者暧昧关系简单整理 在javascript中,prototype.constructor以及__proto__之间有着“著名”的剪不断理还乱的三角关系,楼主就着自己对它们的浅显认识,来粗略地理理以备 ...
- 八款Android 开发者必备的小工具
Photo from https://www.airpair.com 在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大 ...