EF实体框架初了解

2015-07-24 08:33:13 · 作者: · 浏览: 1

  什么是实体(Entity),相信大家都认识过了,就是我们重构机房收费系统的时候,那个在三层之间负责传数据的层嘛。在一个作用域内数据类型是如何定义的。

一、实体框架(EntityFramework)是什么呢?

  Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。EF是开发可以采用特定于域的对象和属性的形式使用数据,不用开路存储数据的技术数据库表和列。形成了更高一个层面上的抽象,并且能够以相对传统应用程序更少的代码。

二、可能你又会问,这个ORM框架是什么东西?

  广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要要了解任何关系型数据库存储数据的实现细节。表实体和表的相互转化。将实体的变化映射到表中。

\

[三个字母的含义]

三、EF工作原理?

  利用了抽象化数据结构的方式,将每一个数据库对象都转换成应用程序对象,而数据字段都变成了属性,关系则变成了结合属性,让ER模型完全变成数据库对象模型。这样就可以让程序员用最熟悉的语言去操作这些对象,事实上是在操作数据库的变化。在抽象化的结构之下,再结合三层框架让数据访问轻松的实现。

\

四、有常见两种方法来定义数据模型:

1、CodeFirst

使用Code First 用代码来定义模型,然后生成数据库。
CodeFirst是EntityFramework的一种技术手段,因为传统编程方式都是先建立数据库,然后根据数据库模型为应用程序建模,再进行开发;CodeFirst从字面上理解就是代码先行,先在程序中建立要映射到数据库的实体结构,然后EntityFramework可以根据实体结构生成所对应的数据库。

2、ModelFirst

使用Model First 用方框和线条来定义模型,然后生成数据库。

通过 Model First,可以使用实体框架设计器来设计新模型,然后从模型生成数据库架构。模型存储在一个 EDMX 文件(扩展名为 .edmx)中,可在实体框架设计器中查看和编辑。应用程序中用于交互的类是自动从 EDMX 文件生成的。

五、举例ModelFirst

1、创建ADO.NET实体数据模型

\

2、添加实体

\\

3、根据模型生成数据库

\

4、测试数据库连接

\

5、数据库生成,会生成对应的数据库脚本语言。

\

举例CodeFirst:

codefirst需要用到数据库访问的上下文DBContext对象。结合Linq进行数据的查询。

?

namespace CodeFirstDatabaseSample
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? using (var db = new BlogContext())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? Console.Write("Enter a name for a new blog:");
? ? ? ? ? ? ? ? var name = Console.ReadLine();
? ? ? ? ? ? ? ? var blog = new Blog { Name = name };
? ? ? ? ? ? ? ? db.Blogs.Add(blog);
? ? ? ? ? ? ? ? db.SaveChanges();


? ? ? ? ? ? ? ? var query = from b in db.Blogs
? ? ? ? ? ? ? ? ? ? ? ? ? ? orderby b.Name
? ? ? ? ? ? ? ? ? ? ? ? ? ? select b;


? ? ? ? ? ? ? ? foreach (var item in query)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Console.WriteLine(item.Name);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }


? ? ? ? public class Blog
? ? ? ? {
? ? ? ? ? ? public int BlogId { get; set; }
? ? ? ? ? ? public string Name { get; set; }
? ? ? ? ? ? public virtual List
  
    Posts { get; set; }
? ? ? ? }


? ? ? ? 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 Blog { get; set; }
? ? ? ? }


? ? ? ? public class BlogContext : DbContext
? ? ? ? {
? ? ? ? ? ? public DbSet
   
     Blogs { get; set; } ? ? ? ? ? ? public DbSet
    
      Posts { get; set; } ? ? ? ? } ? ? } } 
    
   
  


?

六、总结

  实体框架将数据库对象抽象化,方便了我们对数据库修改等操作。让数据的访问工作变的简单。