EF-Code First 入门
本文程序基于VS2015、EF6.1,本文不做过多深入讨论,只是个入门。
EF 就是微软的 EntityFramework,主要分为 DB First,Model First,Code First。之前也只是简单的用 DB First,后来发现 Code First 才是大势所趋,毕竟对于 Coder 来说代码实现更好点,而且迁移很好用。
首先是程序结构

一、Models
先弄2个Model,对应于2张表的结构
public class UserModel
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public virtual ICollection<ProductModel> Products { get; set; }
}
public class ProductModel
{
public int Id { get; set; }
public string Name { get; set; }
}
二、Mapping
这里主要是设置每个字段的一些限制,比如是否可为空,外键关系啊等等,有些人喜欢写在 Context 的 OnModelCreating 里,但是我还是喜欢单独写成 Mapping 里,这样更清晰一些
public class UserModelMap : EntityTypeConfiguration<UserModel>
{
public UserModelMap()
{
//this.ToTable("dbo.User");
this.HasKey(u => u.Id);
this.Property(u => u.Name).IsRequired();
this.HasMany(u => u.Products);
}
}
public class ProductModelMap : EntityTypeConfiguration<ProductModel>
{
public ProductModelMap()
{
this.HasKey(p => p.Id);
this.Property(p => p.Name).IsRequired();
}
}
三、Context
先在 App.config 里添加一个连接字符串,请注意正常的 SqlServer 和 LocalDB 连接字符串不一样
<connectionStrings>
<add name="EFCodeFirst"connectionString="Server=.;Database=EFCodeFirst;Integrated Security=SSPI"providerName="System.Data.SqlClient"/>
</connectionStrings>
创建一个 Context
public class EFContext : DbContext
{
public DbSet<UserModel> Users { get; set; }
public DbSet<ProductModel> Products { get; set; }
public EFContext()
: base("name=EFCodeFirst")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//modelBuilder.Entity<UserModel>()
modelBuilder.Configurations.Add(new UserModelMap());
modelBuilder.Configurations.Add(new ProductModelMap());
}
}
四、创建
运行后就可以创建一个数据库了

五、迁移
开发过程中总是会改数据库的,所以就需要用到迁移
在 Package Manager Console 中执行 Enable-Migrations,然后目录中就会出现 Migrations 文件夹了
每次执行迁移时都会生成一个文件,可以用来恢复,这样也有个记录,我觉得这点还是很强大的
六、常用的命令
从网上找到的,不全
安装EF
PM> Install-Package EntityFramework Or NuGet
启用Migrations
PM> Enable-Migrations -EnableAutomaticMigrations
添加Migration
PM> Add-Migration InitialCreate(名字)
更新
PM> Update-Database -Verbose
获取指定版本
PM> Update-Database –TargetMigration:"201606220937315_InitialCreate.cs"(名字)
EF-Code First 入门的更多相关文章
- EF和MVC系列文章导航:EF Code First、DbContext、MVC
对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念泉涌而出,的确犹如当头一棒不知所措.本系列文章可以帮助新手入门并熟练使用EF和MVC,有了 ...
- 用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署
用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的Code First迁移和部署 这是微软官方SignalR 2.0教程Getting Started with En ...
- EF Code First、DbContext
EF Code First.DbContext 对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念一下泉涌而出,犹如当头一棒,的确有点不知所 ...
- [转] 使用 MVC 5 的 EF6 Code First 入门 系列
译文:http://www.cnblogs.com/Bce-/category/573301.html 原文:http://www.asp.net/mvc/overview/getting-start ...
- EF Code First Migrations数据库迁移
1.EF Code First创建数据库 新建控制台应用程序Portal,通过程序包管理器控制台添加EntityFramework. 在程序包管理器控制台中执行以下语句,安装EntityFramewo ...
- EF Code First学习系列
EF Model First在实际工作中基本用不到,前段时间学了一下,大概的了解一下.现在开始学习Code First这种方式.这也是在实际工作中用到最多的方式. 下面先给出一些目录: 1.什么是Co ...
- EF Code First 初体验
Code First 顾名思义就是先代码,再由代码生成数据库的开发方式. 废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项目:Model.DataAccess和一 ...
- 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】
[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...
- EF Code First 主键对应多个外键
这是一位朋友提出的疑问,EF 映射主键可以对应多个外键吗?如果外键设置级联删除会发生什么情况?下面做一个测试,示例实体代码: public class Blog { public Blog() { P ...
- 【记录】EF Code First 实体关联,如何添加、修改实体?
在使用 EF Code First 的时候,我们经常会对项目中的 Entry 进行一对多.多对多的映射配置,这时候就会产生主实体和子实体的概念,我们在添加.修改他们的时候,有时候会产生一些问题,比如添 ...
随机推荐
- VMware系统运维(九)VMware vSphere Client 安装
1.点击下一步 2.接受协议,下一步 3.选择安装位置,下一步 4.开始安装 5.安装完成,进行登录测试. VMware vsphere 5.1 登录名为administrator VMware ...
- JAVA数字证书制作生成
1.加密算法 为了网络通讯中的报文安全,一般需要对报文进行加密,目前常用的加密算法有: 非对称加密算法:又称公钥加密算法,如RSA.DSA/DSS,最常用的就是RSA算法(算法公开,可自行百度了解算法 ...
- 使你的 Google Summer of Code 建议被接收的5个技巧
本文翻译自:http://www.di.ens.fr/~baghdadi/TXT_blog/5_advices_to_get_your_proposal_accepted.lyx.html 本文讲的主 ...
- 20145102 《Java程序设计》第3周学习总结
20145102 <Java程序设计>第3周学习总结 教材学习内容总结 以""包含的字符串,只要内容相同(序列,大小写相同),无论在程序代码中出现几次,都只会建立一个S ...
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
- HTML、JS、CSS之特殊字符
可能这是冷知识了,并不为多数人知道像HTML.JS.CSS它们的特殊字符的写法,我也是在网上收录的在这里make一下: 箭头类 符号 UNICODE 符号 UNICODE HTML JS CSS HT ...
- Objective-C 【从文件中读写字符串(直接读写/通过NSURL读写)】
———————————————————————————————————————————从文件中读写字符串(直接读写/通过NSURL读写) #import <Foundation/Foundati ...
- 你一定能用的上的iOS第三方库
点国内程序员不常用的热门iOS第三方库:看完,还敢自称"精通iOS开发"吗? 综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型, ...
- eclipse maven spring +spring mvc mybatis
http://yuanmomo.net/archives/449 http://www.tuicool.com/articles/feqUJz http://wenku.baidu.com/link? ...
- 配置windows下驱动开发环境
1.下载安装Visual Studio 2008. 2.下载安装WDK 下载地址(点此下载) 建议完全安装,为了便于配置,作者安装到C盘.(C:/WinDDK) 3. ddkwizards(ddkwi ...