Entity Framework CodeFirst------使用CodeFirst方式建立数据库连接(一)
本文分步演练介绍通过 Code First 开发建立新数据库。这个方案包括建立不存在的数据库(Code First 创建)或者空数据库(Code First 向它添加新表)。借助 Code First,可以使用 C# 类定义模型。可以选择使用类的特性和属性执行其他配置,也可以使用 Fluent API 执行其他配置。
1.使用工具
Vs2010、Vs2012或者Vs2013,本文使用的IDE是Vs2013
Nuget程序管理包
2.创建应用程序
简单起见,我们将使用visual studio创建一个控制台应用程序,将控制台命名为EntitySample,创建完成后,我们在项目下面新建一个文件夹并命名为Model,新建一个Student类,在student类中添加几个属性
public Class Student
{
public int ID{ get; set; } public string Name { get; set; } public string Class { get; set; } public int Age { get; set; }
}
3.创建实体DbContext
DbContext称之为数据库上下文,其可以代表一个数据库的集合或者表示为数据库的一个会话,以便我们查询和保存数据。我们定义一个派生自 System.Data.Entity.DbContext 的上下文,并为模型中的每个类公开一个类型化 DbSet<TEntity>,通过该上下文可以使用linq进行查询工作。在使用DbContext之前,我们需要添加 EntityFramework NuGet 程序包。
项目”–>“管理 NuGet 程序包…”
注意:如果没有“管理 NuGet 程序包…”选项,则应安装 最新版本的Nuget
选择“联机”选项卡
输入EntityFramework 查找 选择“EntityFramework”程序包
单击“安装”
安装完成后。我们在项目下新建一个文件夹DbClassContext,在该文件夹下添加一个类 并命名为EntityClassContext,添加 System.Data.Entity 引用,并将类继承自DbContext。
该类主要管理我们自定义的所有的实体类。通过DbSet设置 DbSet代表数据库中的所有实体
public Class EntityClassContext: DbContext
{
public DbSet<Student> StudentContext { get; set; }
}
4.在Program.cs控制台程序main方法中写入代码

5.运行效果如下

6.这样我们通过EntityFramework创建了一个数据库,这个时候我们就会有一个疑问,我们都没有配置数据库连接,打开项目的app.config,我们发现并没有配置数据库的连接字符串,那么数据到底存储在哪儿去了。
原来我们在安装完成VS2010、12、13时,其会安装一个SQL Express实例,如果SQL Express 不可用则 Code First 将尝试使用 LocalDb(默认情况下随 Visual Studio 2012 安装)数据库以项目名称+派生上下文的完全限定名命名,在我们的示例中上下文是EntitySample.EntityClassContext,所以我们会生成上述名称的数据库。
7.可以在 Visual Studio 中使用服务器资源管理器连接至此数据库
“视图”->“服务器资源管理器”
右键单击“数据连接”并选择“添加连接…”
如果尚未从服务器资源管理器连接至数据库,则需要选择 Microsoft SQL Server 作为数据源连接至 LocalDb ((localdb)\v11.0) 或 SQL Express (.\SQLEXPRESS),具体取决于安装情况


8.连接成功后,我们可以查看到我们刚才添加的数据。
9.如果我们是在正式的开发过程中,可能需要连接本地的sql或者远程的sql,那么我们需要更改数据库连接方式。如果需要更改的话,我们打开项目下面的app.config配置文件,在<configuration></configuration>标签下面配置连接字符串。name是指我们派生的DbContext名称


10.通过配置上述字符串后,我们可以连接自己需要的数据库,如果你需要连接其他数据库,可以更改数据库连接字符串。因为此次的实例项目比较简单,园友们可以自己创建项目实验即可。
下节我们集中讨论一下Entity Framework在数据结构变化的时候,如何处理。
Entity Framework CodeFirst------使用CodeFirst方式建立数据库连接(一)的更多相关文章
- Oracle中使用Entity Framework 6.x Code-First
Oracle中使用Entity Framework 6.x Code-First方式开发 去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下O ...
- Entity Framework入门教程: Entity Framework支持的查询方式
Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...
- Entity Framework常用的查询方式
Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...
- Oracle中使用Entity Framework 6.x Code-First方式开发
去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下Oracle官网,发现EF6.X已经支持了,并且给出了二篇教程(英文版): 1.Using ...
- 如何使用ASP.NET Web API OData在Oracle中使用Entity Framework 6.x Code-First方式开发 OData V4 Service
环境: Visual Studio 2013 + .Net Framework 4.5.2 1.新建项目 2.安装OData,ODP.NET 安装的包: 下面是部分代码: using System; ...
- Entity Framework 自动生成CodeFirst代码
前言 在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power To ...
- [EF] 如何在 Entity Framework 中以手动方式设定 Code First 的 Migration 作业
Entity Framework (简称 EF) 发展到现在, 版本已经进入 6.1.0, 距离我写的「在 VS2013 以 Code First 方式建立 EF 资料库」这篇文章已有半年的时间.如果 ...
- Entity Framework之DB First方式
EF(Entity Framework的简称,下同)有三种方式,分别是:DataBase First. Model First和Code First. 下面是Db First的方式: 1. 数据库库中 ...
- Entity Framework后台采用分页方式取数据与AspNetPager控件的使用
本文是一个对AspNetPager控件使用的笔记! 有关AspNetPager控件可以查看杨涛主页.这是一个开放的自定义ASP.NET控件,支持各种自定义的数据分页方式,使用很方便,而且功能也很强大, ...
随机推荐
- linux c++ 遍历一个目录下的文件名 (包括子目录的文件名)
最近写代码有一个要遍历目录下的每一个文件并取得这个文件的绝对路径的需求, 我们知道linux c++中有system命令所以我在代码中 先生成了一个log,然后去读log文件的每一行文件名,然后给存储 ...
- uboot 连接脚本分析
一.脚本分析 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm ...
- IbatisNet开发使用小结
一. 介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM ...
- BZOJ 4013 实验比较
Description 小D被邀请到实验室,做一个跟图片质量评价相关的主观实验.实验用到的图片集一共有\(N\)张图片,编号为\(1\)到\(N\).实验分若干轮进行,在每轮实验中,小\(D\)会被要 ...
- TCP三次握手和http过程
pc浏览服务器网页此过程不包括域名查询,只描述TCP与http数据流的变化.一.pc与http服务器进行三次握手来建立连接.1.pc:seq=0 ack=0 syn=1 ack=0 发送给服务器建立同 ...
- 【UVA1371】Period (二分+DP)
题意: 给出两个字符串A,B将B分解成若干个子字符串,然后每个子字符串都要经过编辑变成字符串A,所有子串中编辑最多的次数即为当前状态下的最大编辑次数,要求求最小的最大编辑次数. 编辑操作包括修改.删除 ...
- mac下设置命令别名
项目使用了gerrit,每次push代码都需要执行 git push origin HEAD:refs/for/master 为了简便,使用了alias命令来控制台下使用下面的命令简化了提交. ali ...
- Bitmap介绍
转自:http://blog.csdn.net/xgdofull/article/details/5424611 简单的说就是用数组存放若有数据就标志为1或true,若不存在标志为0或false.比如 ...
- ‘char *' differs in levels of indirection from 'int'
这个问题是有与和系统变量重名导致的,如 char* ans = (char*) malloc(10);系统变量是一个int.
- LeetCode解题报告:Insertion Sort List
Insertion Sort List Sort a linked list using insertion sort. leetcode subject思路:标准的插入排序.考察一下链表的操作. 对 ...