EntityFramework

在VS2015添加新建项时,选择数据->ADO.NET 实体数据模型,有一下选项

来自数据库的EF设计器,这个就是我们最常用的EntityFramework设计模型了,选择它,然后根据设计好的数据库,就会生成一个edmx文件,和一个数据库上下文,然后我们就可以不用写sql也可以愉快的访问数据啦,但是这种方式对于经常变动的数据库结构,更新起来经常会有一些bug,原数据库删除的字段和结构,在edmx中更新模型是需要手动删除的

CodeFirst

CodeFitst的出现给.net开发提供了一种新的方式,这种以代码优先的数据库模型更能适应需求的变更和产品迭代开发,接下来就以一个简单的实例来看一下怎么使用它吧

1.在自己的解决方案下添加一个类库项目Domain,然后添加一个实体

    public class User
{
public int Id { get; set; }
public int UserName { get; set; }
public string Password { get; set; }
}

2.添加数据库上下文

    public class DBContext:DbContext
{
public DBContext()
: base("Blog")
{ }
public DbSet<User> Users { get; set; }
}

3.配置数据库连接字符串

需要注意的事,连接字符串需要写到启动项目中,如果当前启动项目是Domain,那它就是以Domain的App.comfig为准,如果是web项目就是Web.config

一般情况下两个都写一下吧

<connectionStrings>
<add name="Blog" connectionString="server=.;database=Blog;uid=sa;pwd=123" providerName="System.Data.SqlClient"/>
</connectionStrings>

4.通常这个时候只需要运行你的程序,系统就会自动创建数据库了,还有一种方法就是使用migration创建你的数据库

打开程序包管理控制台,注意默认项目是Domain

PM> Enable-Migrations

你会发现Domain下多了一个Migrations文件夹,并且有一个名称为Configuration的类(用于更新)

打开程序包管理控制台

PM> Add-Migration Init

这个时候,它会根据DBContext上下文下的模型来和以往的版本比较,并且生成更新文件,此时没有以往版本,所以更新内容如下

namespace Domain.Migrations
{
using System;
using System.Data.Entity.Migrations; public partial class Init : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Users",
c => new
{
Id = c.Int(nullable: false, identity: true),
UserName = c.Int(nullable: false),
Password = c.String(),
})
.PrimaryKey(t => t.Id); }
public override void Down()
{
DropTable("dbo.Users");
}
}
}

Up用于更新,Down用于回退这个很好理解

PM> Update-database

打开Sql Server(如果用的localDb就在localDb中查看)查看数据库

使用EF CodeFirst 创建数据库的更多相关文章

  1. EF CodeFirst 创建数据库

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    话说EF支持三种模式:Code First   M ...

  2. NetCore2.0下使用EF CodeFirst创建数据库

    本文所使用的VS版本:VS2017 15.3.0 首先新建一个.net core项目  取名NetCoreTask 使用模型视图控制器方式 新建Model层 在Model层下新建一个user实体类 1 ...

  3. ASP.NET Core 2.2 WebApi 系列【二】使用EF CodeFirst创建数据库

    Code First模式 Code First是指"代码优先"或"代码先行". Code First模式将会基于编写的类和配置,自动创建模型和数据库. 一.准备 ...

  4. EF自动创建数据库步骤之三(自定义数据库初始器)

    EF自动创建数据库需要我们告诉数据库如何进行初始化:如创建表后是否需要插入一些基础数据,是否 需要创建存储过程.触发器等.还有就是EF有三种初始化方式(参见下面三个类): DropCreateData ...

  5. EF自动创建数据库步骤之一(实体类写法)

    文章演示使用EF自动创建数据库第一个步骤创建实体类. 一.创建表映射实体类 using System; using System.Collections.Generic; using System.C ...

  6. EF CodeFirst生成数据库到Sqlserver中

    EF CodeFirst简单实例这篇文章介绍了如何用EF去快速生成数据库.但是这个并没有生成到sqlserver中,总觉得不爽.下面就来讲一下,如何将数据库生成到sqlserver中. 按照EF Co ...

  7. EF自动创建数据库步骤之二(继承DbContext类)

    创建好表实体类后,接着就是创建数据库上下文(继承DbContext)并将实体类添加进来. 代码示例如下: using DBClientEntity; using System; using Syste ...

  8. 使用CodeFirst创建数据库

    1.新建一个类库项目 2.右键管理Nuget程序包,搜索EntityFramework.然后安装 3.新建一个类,然后引用 using System.Data.Entity; 然后写类初始化方法(ba ...

  9. EF自动创建数据库步骤之四(启用数据库初始器)

    在创建完DBIfNotExistsInitializer数据库初始化器类后,需要在程序每一次访问数据库前,告诉EF使用该初始化器进行初始化. 代码如下 : Database.SetInitialize ...

随机推荐

  1. 从RPC开始(一)

    这是一篇关于纯C++RPC框架的文章.所以,我们先看看,我们有什么? 1.一个什么都能干的C++.(前提是,你什么都干了) 2.原始的Socket接口,还是C API.还得自己去二次封装... 3.C ...

  2. python核心编程第二版练习题答案

    2-5 #写一个while循环,输出整型为0~10 a=0while a<11: print a a+=1 #写一个for循环重复以上操作 for i in range(11): print i ...

  3. 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划

    发个通知,过段时间学习计划相关的东西就出来了,上次写了篇指引文章后有些好奇心颇重的人跟我说:“发现最近群知识库和技能库更新的频率有点大,这是要放大招的节奏啊!” 很多想学习却不知道如何规划的人想要一个 ...

  4. JavaScript 开发规范

    本篇主要介绍JS的命名规范.注释规范以及框架开发的一些问题. 目录 1. 命名规范:介绍变量.函数.常量.构造函数.类的成员等等的命名规范 2. 注释规范:介绍单行注释.多行注释以及函数注释 3. 框 ...

  5. Xamarin+Prism开发详解三:Visual studio 2017 RC初体验

    Visual studio 2017 RC出来一段时间了,最近有时间就想安装试试,随带分享一下安装使用体验. 1,卸载visual studio 2015 虽然可以同时安装visual studio ...

  6. C#中将DataTable导出为HTML的方法

    今天我要向大家分享一种将DataTable导出为到HTML格式的方法.有时我们需要HTML格式的输出数据, 以下代码就可以帮助我们达到目的,. 首先,我们要绑定DataTable和 DataGridV ...

  7. Asp.Net WebApi核心对象解析(上篇)

    生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...

  8. 简述我的SOA服务治理

    SOA服务治理 1.解决业务部门服务冲突和纠纷2.版本定义与版本管理3.服务备案与服务管理4.业务监督与服务监控 SOA的战略目的 一.业务价值胜过技术策略 二.战略目标胜过具体项目的效益 三.内置的 ...

  9. [转] 从知名外企到创业公司做CTO是一种怎样的体验?

    这是我近期接受51CTO记者李玲玲采访的一篇文章,分享给大家. 作者:李玲玲来源:51cto.com|2016-12-30 15:47 http://cio.51cto.com/art/201612/ ...

  10. angular中使用ngResource模块构建RESTful架构

    ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法 1.引入 ...