博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework
阅读量:5354 次
发布时间:2019-06-15

本文共 2504 字,大约阅读时间需要 8 分钟。

什么是Entity Framework?

    ado.net entity framework 是微软以ado.net为基础所发展出来的 对象关系对象(O/R Mapping)解决方案

什么是ORM?

Entity Framework使用场景

各个版本

框架

开源地址:

安装

db first

创建数据模型

 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()是执行数据库操作

Code First

数据库类:

blog:

public class Blog    {        public int BlogID { get; set; }        public string BlogName { set; get; }        public virtual List
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
Blogs { get; set; } public DbSet
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
().Property(b => b.BlogUrl).HasColumnName("urladdress"); }

使用code first 连接已有的数据库

 

具体操作也是一样

using (var dbc = new CodeFirstFromDB())            {                dbc.Blogs.Add(new Blogs { BlogName = "ExistBlogName" });                dbc.SaveChanges();            }

Model First

先设计数据模型 ,然后通过数据模型生成entityFramework类 和 数据库

 

通过右键新增实体和关系(1对1 1对多 多对多) 

生成数据库

模式的选择

codefirst 既可以创建新的数据库也可以连接一个已经存在的数据库

model first 先创建数据模型 然后生成entity Class 和数据库 用于数据库还不存在的情况

dbfirst 用于数据库已经存在的情况

如何选择呢

转载于:https://www.cnblogs.com/handsomer/p/4562597.html

你可能感兴趣的文章
springboot中文官方文档
查看>>
lamdba表达式
查看>>
ThreadLocal实现线程范围内共享
查看>>
多校HDU5723 最小生成树+dfs回溯
查看>>
ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页
查看>>
关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】
查看>>
关于Entity Framework中的Attached报错的完美解决方案终极版
查看>>
Selenium之Web页面滚动条滚操作
查看>>
组合数据类型练习,英文词频统计实例上
查看>>
Uber回馈开源的一些软件
查看>>
day 3 修改haproxy.cfg 作业
查看>>
UIScrollView —— 缩放实现案例(二)
查看>>
【Qt】Qt Linguist介绍【转】
查看>>
sim usim Uim 区别
查看>>
网页中插入透明Flash的方法和技巧
查看>>
动态内存申请函数选择(realloc、malloc 、alloca、 calloc)
查看>>
获取元素属性get_attribute
查看>>
视觉设计师的进化
查看>>
Python/jquery
查看>>
WPF之Binding
查看>>