Entity Framework的简单使用

公司的项目在用EF,最近抽时间研究了下,整理了一个比较公用的EF框架,供大家一起分享下。

EF这东东,用得好的话,确实方便了开发;用得不好的话,出了问题半天也找不出是什么原因。

现在就先介绍EF的简单使用。主要分为以下5个项目

EF.Core:数据实体

EF.Data:C#实体跟数据表直接的映射

EF.Service:数据服务

EFFramework:公共类库

EFSolution:测试项目

DbContext是EF比较重要的类,我们的数据库访问对象都必须继承该类。下面就是我们要用到的数据上下文:

public class EFObjectContext : DbContext, IDbContext
    {
        public EFObjectContext(string nameOrConnectionString)
            : base(nameOrConnectionString)
        {
            //((IObjectContextAdapter) this).ObjectContext.ContextOptions.LazyLoadingEnabled = true;
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //dynamically load all configuration
            //System.Type configType = typeof(LanguageMap);   //any of your configuration classes here
            //var typesToRegister = Assembly.GetAssembly(configType).GetTypes()

            string[] MapPath = { "EF.Data.dll" };

            foreach (var path in MapPath)
            {
                var asm = Assembly.LoadFrom(path);
                var typesToRegister = asm.GetTypes()
                .Where(type => !String.IsNullOrEmpty(type.Namespace))
                .Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));

                foreach (var type in typesToRegister)
                {
                    dynamic configurationInstance = Activator.CreateInstance(type);
                    modelBuilder.Configurations.Add(configurationInstance);
                }
            }

            //...or do it manually below. For example,
            //modelBuilder.Configurations.Add(new LanguageMap());

            base.OnModelCreating(modelBuilder);
        }
}

OnModelCreating方法是应用程序在初始化时将实体跟数据表的映射加载到数据上下文。

1、定义实体

    public class BlogUser:BaseEntity
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Address { get; set; }
    }

此处比较简单,不再废话。

2、定义映射

public partial class BlogUserMap : EntityTypeConfiguration<BlogUser>
    {
        public BlogUserMap()
        {
            this.ToTable("BlogUser");
            this.HasKey(c => c.Id);
        }
    }

定义实体跟数据表的映射,实体之间一对一、一对多、多对多的关系也在此处定义。

3、定义数据服务

public interface IBlogUserService
    {
        IList<BlogUser> GetAllBlogUser();
    }

public class BlogUserService : IBlogUserService
    {
        private readonly IRepository<BlogUser> _blogUserRepository;
        public BlogUserService(IRepository<BlogUser> blogUserRepository)
        {
            this._blogUserRepository = blogUserRepository;
        }
        public IList<BlogUser> GetAllBlogUser()
        {
            return _blogUserRepository.Table.ToList();
        }
    }

测试程序如下:

static void Main(string[] args)
        {
            EngineContext.Initialize(false);
            Console.WriteLine("初始化完成");

            IBlogUserService service = EngineContext.Current.Resolve<IBlogUserService>();

            IList<BlogUser> users = service.GetAllBlogUser();

            Console.ReadKey();
        }

这就是EF的简单使用。

时间: 2025-01-17 15:24:35

Entity Framework的简单使用的相关文章

Entity Framework Demo简单搭建环境

 Entity Framwork(实体框架,简称EF)是ORM(Object Relational Mapping,对象映射关系)的一个解决方案. EF允许项目将数据库的表映射为实体,并封装了操作方法,方便开发人员直接操作数据库. EF有三种开发模式,分别是: Database First(数据库先行): 将已存在的数据库中的表映射为实体: Code First(代码先行):先编写代码,再通过EF反向生成数据库的表: Model First(模型先行):通过一个可视化模型,分别生成数据库和代

什么是EF, 和 Entity Framework Demo简单构建一个良好的发展环境

 Entity Framwork(实体框架.缩写EF)这是ORM(Object Relational Mapping.对象映射关系)一个解决方案. EF的表映射为实体.并封装了操作方法.方便开发者直接操作数据库. EF有三种开发模式.各自是: Database First(数据库先行): 将已存在的数据库中的表映射为实体: Code First(代码先行):先编写代码,再通过EF反向生成数据库的表. Model First(模型先行):通过一个可视化模型,分别生成数据库和代码. 这里演示样例

Entity Framework Linq 简单笔记

类型查询 public class bbb:xxx {} var items = from c in context.Dbset<xxx>    where c is bbb   select c;var items = from c in context.Dbset<xxx> .OfType<bbb>()  select c;

entity framework—简单的增删改查

应用程序对数据库执行CRUD时,通过entity framework方式,实际上是对DbContext的操作,DbContext是EF的入口,DbContext拿到对应的消息(CRUD)后,通过ORM中的Mapping来将对象O映射成数据库中的关系R. 下面就简单的实现一下利用entity framework实现简单的增删改查.首先要说明的是我已经建立了在解决方案中映射了数据库中表"Customer".所有的操作都是针对这张表. 1.增加 Customer customer = new

ASP.NET MVC 5 + EF 6 入门教程 (5) Model和Entity Framework

文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC 5 入门教程 (4) View和ViewBag 源码下载:点我下载 MVC中的Model是用来给View提供显示数据的对象. 这里我们首先创建一个Model对象. 在解决方案资源管理器中右键点击Models文件夹,选择添加->类.添加一个名为Employee.cs的Model类.Models文件夹

ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework

文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC 5 入门教程 (4) View和ViewBag 源码下载:点我下载 一.创建Model MVC中的Model是用来给View提供显示数据的对象. 这里我们首先创建一个Model对象. 在解决方案资源管理器中右键点击Models文件夹,选择添加->类.添加一个名为Employee.cs的Model类

Entity Framework 6 Recipes 2nd Edition(目录索引)

Chapter01. Getting Started with Entity Framework / 实体框架入门 1-1. A Brief Tour of the Entity Framework World / 简单浏览实体框架世界 goto1-2. Using Entity Framework / 使用实体框架 Chapter02. Entity Data Modeling Fundamentals / 实体数据建模基础 2-1. Creating a Simple Model2-2. C

Entity Framework 6 学习笔记2 — 增、删、改、显示简单代码示例

前言 通过 “Entity Framework 6 学习笔记1 — 介绍和安装方法”文章我相信大家对EF的安装应该没什么问题了,整体安装还是比较简单的,只需要通过Nuge搜索EF然后安装就可以了,这也体现了微软一贯原则–“简单”. 安装完了我想很多朋友也着急想体验下EF的好处了吧,今天我就通过EF框架对增.删.改操作做一个简单示例. 创建表 这里我只是做示例所以就创建了一个表并且字段也很少.下面是sql语句,大家可以直接复制生成表结构.   CREATE TABLE Book   (   Id

ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程

原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 Entity Framework Core 上一章节学习完了视图,其实我们应该立即着手讲解模型的,但 ASP.NET Core MVC 中的模型和 Entity Framework 有相当大的关系,所以,在此之前,我们先来讲讲 Entity Framework Core 和如何配置它 本章中,我们将设置和配置我们的应用程