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"(名字)
最新文章
- sqlserver索引与查询优化
- gulp学习笔记1
- CPPUTest 单元测试框架(针对 C 单元测试的使用说明)
- linux下对普通用户设置文件访问控命令之setfacl
- 【转】shell脚本调试(bash trap support bashdb )
- 整理 C#(同步调用、异步调用、异步回调)
- Repeater控件实现数据绑定,并实现分页效果
- POJ 1759 Garland(二分答案)
- Oracle12C 怎样导入scott用户
- 单例模式与静态变量在PHP中
- go defer (go延迟函数)
- mysql的conv的用法
- C语言二维数组实现扫雷游戏
- 什么是TLB?
- TopCoder Div2
- 初学Python——文件操作
- BAT特殊字符
- 转载:MongoDB之旅(超赞,适合初学者)
- 10.29 scrum meeting newbe软件团队工作分配
- [DeeplearningAI笔记]序列模型2.6Word2Vec/Skip-grams/hierarchical softmax classifier 分级softmax 分类器