Entity Framework
2015-06-09 09:42
155 查看
什么是Entity Framework?
ado.net entity framework 是微软以ado.net为基础所发展出来的 对象关系对象(O/R Mapping)解决方案
什么是ORM?
Entity Framework使用场景
各个版本
框架
开源地址:
http://entityframework.codeplex.com/
安装
[b]db first[/b]
创建数据模型
DBContext
dbset 对应数据库的表
增删改查 缓存
上下文.dbset.FirstOrDefault<dbset>(); 返回第一条记录或者默认值
上下文.dbset.Remove() 删除
必须当SavaChange()是执行数据库操作
[b]Code First[/b]
数据库类:
blog:
Post
dbcontext
代码
控制台执行命令
Enable-Migrations
blog 类添加个新属性 BlogUrl
执行命令add-migration
这是发现 数据库 并没有更新 因为我们需要更新一下数据库
命令:update-database
不要手动升级数据库
如果要手动升级数据库
dbcontext类修改
migration config修改
引用
using System.ComponentModel.DataAnnotations;
代码
[StringLength(50)]
public string BlogName { set; get; }
通过Migration 更新数据库
也可以通过
代码(在数据库上下文)
使用code first 连接已有的数据库
具体操作也是一样
[b]Model First[/b]
先设计数据模型 ,然后通过数据模型生成entityFramework类 和 数据库
通过右键新增实体和关系(1对1 1对多 多对多)
生成数据库
[b]模式的选择[/b]
codefirst 既可以创建新的数据库也可以连接一个已经存在的数据库
model first 先创建数据模型 然后生成entity Class 和数据库 用于数据库还不存在的情况
dbfirst 用于数据库已经存在的情况
如何选择呢
ado.net entity framework 是微软以ado.net为基础所发展出来的 对象关系对象(O/R Mapping)解决方案
什么是ORM?
Entity Framework使用场景
各个版本
框架
开源地址:
http://entityframework.codeplex.com/
安装
[b]db first[/b]
创建数据模型
DBContext
dbset 对应数据库的表
增删改查 缓存
public ActionResult Index() { using (var dbc = new DBModel.SchoolEntities()) { var objectContext = (dbc as IObjectContextAdapter).ObjectContext; }; return View(); }
上下文.dbset.FirstOrDefault<dbset>(); 返回第一条记录或者默认值
上下文.dbset.Remove() 删除
必须当SavaChange()是执行数据库操作
[b]Code First[/b]
数据库类:
blog:
public class Blog { public int BlogID { get; set; } public string BlogName { set; get; } public virtual List<Post> Posts { get; set; } }
Post
public class Post { public int PostID { get; set; } public string Title { get; set; } public string Content { get; set; } public int BlogID { get; set; } public virtual Blog Bolg { get; set; } }
dbcontext
public class BlogingContext : DbContext { public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } }
代码
using (var dbc = new CodeFirst.BlogingContext()) { dbc.Blogs.Add(new CodeFirst.Blog { BlogID = 1, BlogName = "qiaowen" }); dbc.SaveChanges(); //保存在哪里了呢 dbcontext首先找这台计算机上有没有sql dbcontext express instance 的实例,如果找不到sqlexpress的实例那么就会去找localdb的实例 }
Code First Migration
数据库迁移(ef 6.1.2)控制台执行命令
Enable-Migrations
blog 类添加个新属性 BlogUrl
执行命令add-migration
这是发现 数据库 并没有更新 因为我们需要更新一下数据库
命令:update-database
不要手动升级数据库
如果要手动升级数据库
dbcontext类修改
migration config修改
Data Annotation
修改字段条件(比如字段长度)引用
using System.ComponentModel.DataAnnotations;
代码
[StringLength(50)]
public string BlogName { set; get; }
通过Migration 更新数据库
也可以通过
Fluent API
修改数据库字段名 条件等代码(在数据库上下文)
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Blog>().Property(b => b.BlogUrl).HasColumnName("urladdress"); }
使用code first 连接已有的数据库
具体操作也是一样
using (var dbc = new CodeFirstFromDB()) { dbc.Blogs.Add(new Blogs { BlogName = "ExistBlogName" }); dbc.SaveChanges(); }
[b]Model First[/b]
先设计数据模型 ,然后通过数据模型生成entityFramework类 和 数据库
通过右键新增实体和关系(1对1 1对多 多对多)
生成数据库
[b]模式的选择[/b]
codefirst 既可以创建新的数据库也可以连接一个已经存在的数据库
model first 先创建数据模型 然后生成entity Class 和数据库 用于数据库还不存在的情况
dbfirst 用于数据库已经存在的情况
如何选择呢
相关文章推荐
- 【VirtualDOM】
- ZBar之自定义二维码扫描
- 相似图片搜索的原理
- Python通过suds调用WCF服务 传递Python List 到 WCF Service
- 搜索技术概述
- Android常用工具类(收藏)
- Eclipse常见错误及解决方案
- 利用activity自定义dialog 开发总结
- 【算法】最大连续乘积子串
- ES6新特性概览
- Filter和FilterChain具体的使用说明
- MessageBox in iOS
- 我的Android系统学习笔记——HAL
- Course Schedule
- 【EPI-6.6】最长连续递增子序列-启发式搜索
- CentOS7 上源码安装KVM(qemu--kvm)
- 相关分析和回归分析
- OpenSLL之建立私有CA
- Thinking in Java 第四章、第五章
- Path Sum II