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中查看)查看数据库

最新文章

  1. python opencv 实现Reinhard颜色迁移算法
  2. mysql 多表联合更新
  3. hdu1078 记忆化搜索
  4. LA 4329
  5. 使用Yeoman搭建 AngularJS 应用 (11) —— 让我们搭建一个网页应用
  6. windows2012 IIS8.5 不能在此路径中使用此配置节
  7. Yii Framework2.0开发教程(4)在yii中定义全局变量
  8. Jquery Validate 表单验证的多种方式
  9. SQLite错误总结 error code 19: constraint failed
  10. 题目八 one + two = 3 soj
  11. 彻底弄懂 JavaScript 执行机制
  12. 历史命令~/.bash_history,查看所有别名alias,命令执行顺序,命令行常用快捷键,输入输出重定向,wc统计字节单词行数
  13. 云时代的.NET
  14. kafka.common.KafkaException: Failed to acquire lock on file .lock in /tmp/kafka-logs. A Kafka instance in another process or thread is using this directory.
  15. 自定义命令杀死 java 进程 alias kjava
  16. sql 50题
  17. IO流总结笔记三
  18. [LeetCode] 744. Find Smallest Letter Greater Than Target_Easy tag: **Binary Search
  19. 2017-2018-1 20179202《Linux内核原理与分析》第十二周作业
  20. jQuery新建HTML Element

热门文章

  1. Asp.net Boilerplate之AbpSession扩展
  2. SQL Server相关书籍
  3. JAVA语言中的修饰符
  4. DDD初学指南
  5. 窥探Vue.js 2.0 - Virtual&#160;DOM到底是个什么鬼?
  6. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法
  7. Nginx学习笔记--001-Nginx快速搭建
  8. Java列表
  9. javascript高性能编程-算法和流程控制
  10. 中文 iOS/Mac 开发博客列表