非常有用的两篇文章

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. Java应用架构的演化之路

    Java应用架构的演化之路 当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现. 1. 不同系统不同语言之间的交互 现 在我们常见 ...

  2. phpMyAdmin安装

    phpMyAdmin是MySql的一个Web操作界面. phpMyAdmin官网貌似被和谐了,经常无法访问.不过我们可以从GitHub下载phpMyAdmin. 然后解压,搭建与普通的PHP网站一样. ...

  3. Python基础 第一天

    编码 #coding=utf-8 函数入口 if __name__== "__main__": 内置方法 type:a=1 type(a) help:import time hel ...

  4. STM32F4_TIM基本延时(计数原理)

    Ⅰ.概述 STM32的TIM定时器分为三类:基本定时器.通用定时器和高级定时器.从分类来看就知道STM32的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了.很多初学者甚至工作了 ...

  5. 《Prism 5.0源码走读》Prism 5.0简介

    Prism是一个开发和设计模块化WPF应用的基础框架,里面包含了MVVM pattern和设计示例.当前最新的版本是Prism 5.0,官方网站:https://compositewpf.codepl ...

  6. RMAN - 备份异机恢复

    OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...

  7. JVM学习总结五(番外)——VisualVM

    距离上次介绍Jconsole已经时隔两周了,这期间由于工作中要用go来做一个新项目,所以精力都用在入门go上了,不过发现go语言用起来真的挺不错的,比python感觉还好点,大家没事可以了解下.   ...

  8. Swift 中的利刃,函数和闭包

    input[type="date"].form-control,.input-group-sm>input[type="date"].input-grou ...

  9. GNU make 总结 (一)

    make的执行依赖于一个makefile文件,该文件告诉make应该如何执行编译和链接操作.make通过比较对应文件的最后修改时间来决定哪些文件需要更新.make工具主要用来进行工程编译和程序链接操作 ...

  10. [转]p2p端口映射工具 dog-tunnel

    [转]p2p端口映射工具 dog-tunnel http://www.oschina.net/p/dog-tunnel 狗洞是一个高速的 P2P 端口映射工具,同时支持Socks5代理. 0.5版后开 ...