非常有用的两篇文章

MSDN:Code First 迁移

博客园:CodeFirst数据迁移(不丢失数据库原有数据)

EF有三种开发模式:Model First,Database First 和 Code First。 本文主要介绍Code First模式,Code First即代码优先,就是先编写业务实体模型类,然后通过程序包管理器控制台创建数据库。

一、安装EntityFramework

  在项目上右键菜单,点击“管理NuGet程序包”,搜索“EntityFramework”,在项目中安装最新版本的EntityFramework。

  

  

二、修改配置文件

EntityFramework安装完成后,会自动生成一个App.confing文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>

如果不添加数据库连接字符串,数据库默认会声称在App_Data文件夹下,在一般项目中我们还需修改此配置文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<!--<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />-->
</configSections>
<!--<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
<parameter value="shz-pc\sqlexpress2012"/>
</parameters>
</defaultConnectionFactory>
</entityFramework>-->
<connectionStrings>
<add name="SAUnitOfWork" connectionString="Data Source=shz-pc\SQLEXPRESS2012;Initial Catalog=AccountingSys;User ID=sa;Password=sa" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

三、创建实体模型类和DbContext

贴出部分实例代码:

/// <summary>
/// 用户信息表
/// </summary>
public class User : Entity
{
[Required]
[StringLength()]
/// <summary>
/// 用户名
/// </summary>
public string Name { get; set; } [Required]
[StringLength()]
/// <summary>
/// 登录Id
/// </summary>
public string LoginId { get; set; } [Required]
[StringLength()]
/// <summary>
/// 登录密码
/// </summary>
public string Password { get; set; } [StringLength()]
/// <summary>
/// 手机号
/// </summary>
public string Mobile { get; set; } [StringLength()]
/// <summary>
/// 邮箱
/// </summary>
public string Email { get; set; } [Required]
/// <summary>
/// 用户状态(0:禁用;1:启用)
/// </summary>
public int Status { get; set; } }

以下是数据上下文类:

public class SAUnitOfWork : DbContext, IQueryableUnitOfWork
{
public DbSet<Operation> Operation { get; set; }
public DbSet<PurchaseDetail> PurchaseDetail { get; set; }
public DbSet<PurchaseHeader> PurchaseHeader { get; set; }
public DbSet<Role> Role { get; set; }
public DbSet<RoleOperations> RoleOperations { get; set; }
public DbSet<SettlementDetail> SettlementDetail { get; set; }
public DbSet<SettlementHeader> SettlementHeader { get; set; }
public DbSet<User> User { get; set; }
public DbSet<UserRoles> UserRoles { get; set; }
}

四、启用程序包管理器控制台

在VS菜单栏“工具”→“库程序包管理器”→打开“程序包管理器控制台”:

1.启用 Code First 迁移命令:Enable-Migrations
2.为迁移搭建基架:Add-Migration Initial
3.开始迁移:Update-Database

执行完以上三个命令后,你会发现在你的数据库服务实例中已经生成了数据库:

代码优先-Code First的更多相关文章

  1. Entity Framework:代码优先

    一.代码优先Code First EF6支持Oracle ODT 12C Release 3 (net4.5) DataModel(类)-->生成数据库DB 或 存在的数据库DB-->生成 ...

  2. 七:mvc使用CodeFirst(代码优先)创建数据库

    1. 理解EF CodeFirst模式特点 2. 使用CodeFirst模式生成数据库 1. CodeFirst模式(代码优先) Code First是Entity Framework提供的一种新的编 ...

  3. C# ORM—Entity Framework 之Code first(代码优先)(二)

    一.Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个 ...

  4. EF之Code First代码优先

    1.前言 通过英文可知,表示的是代码优先,一般创建EF都是先创建数据库,创建根据数据库的EF实体模型,而code - first 则是反过来!... 2.代码实战 我们这次创建的不是原来的数据库EF设 ...

  5. EF Code First 使用 代码优先迁移(三)

    迁移到特定版本(包括降级) 到目前为止,我们一直升级到最新的迁移,但有时您可能需要升级/降级到特定的迁移. 这是目前我数据库中的表:有四个表,我降级到addEndTime这个版本(这个版本是没有gra ...

  6. 实体框架自定义代码优先约定(EF6以后)

    仅限EF6仅向前 - 此页面中讨论的功能,API等在实体框架6中引入.如果您使用的是早期版本,则部分或全部信息不适用. 使用Code First时,您的模型是使用一组约定从您的类计算的.默认的Code ...

  7. EF框架搭建小总结--CodeFirst代码优先

    前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...

  8. 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先

    上一篇文章(https://www.cnblogs.com/meowv/p/12909558.html)完善了项目中的代码,接入了Swagger.本篇主要使用Entity Framework Core ...

  9. 结合实体框架(代码优先)、工作单元测试、Web API、ASP. net等,以存储库设计模式开发示例项目。NET MVC 5和引导

    介绍 这篇文章将帮助你理解在库模式.实体框架.Web API.SQL Server 2012.ASP中的工作单元测试的帮助下设计一个项目.净MVC应用程序.我们正在开发一个图书实体和作者专用的样例图书 ...

随机推荐

  1. CentOS 下如何查看并清理系统内存空间

    有时候在服务器上打开了很多会占用内存的程序但关闭这些程序后,发现内存空间还是和没有关闭应用程序时的占用一样,以致使其它应用程序打开时内存不够或很卡,那么此时就想清理掉以前的程序打开时所占用的内存.而大 ...

  2. HTTP协议中PUT/GET/POST/HEAD等介绍

    HTTP协议中GET.POST和HEAD的介绍 GET: 请求指定的页面信息,并返回实体主体. HEAD: 只请求页面的首部. POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体 ...

  3. Nginx Location匹配举例

    1.location / {       if (!-f $request_filename){              rewrite ^/(.+)$ /uri.php last;      }} ...

  4. 通过bind实现activity与service的交互

    先点bind按钮实现onCreate,在点击start给service传值(get方法) xml: <RelativeLayout xmlns:android="http://sche ...

  5. 全排列 (codevs 1294)题解

    [题目描述] 给出一个n, 请输出n的所有全排列(按字典序输出). [样例输入] 3 [样例输出] 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 [解题思路] 听说C++有作 ...

  6. 第九章 管理类型(In .net4.5) 之 继承机制

    1. 概述 本章包括 设计和实现接口.创建和使用基类 以及 使用.net类库提供的标准接口. 2. 主要内容 2.1 设计和实现接口 一个接口包含公共的方法.属性.事件.索引器.类和结构都可以实现接口 ...

  7. C#中Image , Bitmap 和 BitmapData

    先说Image,Image 就是个图像,不能实例化,提供了位图和源文件操作的函数.本篇文章他就是来打酱油的,这里提供一个Bitmap转成BitmapSource的方法. [DllImport(&quo ...

  8. 网络开发库从libuv说到epoll

    引言 这篇博文可能有点水,主要将自己libuv的学习过程和理解. 简单谈方法. 有点杂. 那我们开始吧. 首先介绍 githup . 这个工具特别好用. 代码托管. 如果不FQ可能有点卡. 但是应该试 ...

  9. CSS3中新出现的技术

    CSS3中新出现的技术 CSS媒体查询 媒体查询 包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3加入的媒体查询使得无需修改内容便可以使样式应用于某些特定 ...

  10. c语言中通过指针将数值赋值到制定内存地址

    1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100.我们怎么才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质 ...