您的位置:首页 > 其它

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 对应数据库的表

增删改查 缓存

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 用于数据库已经存在的情况

如何选择呢



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: