首页 > 数据库技术 > 详细

一步一步学EF系列【4、升级篇 实体与数据库的映射】

时间:2015-09-10 12:34:13      阅读:323      评论:0      收藏:0      [点我收藏+]

     之前的三张为基础篇,如果不考虑架构问题,做一般的小程序,以足够用了。基本的增删改查也都有了。但是作为学习显然是不够的。通过之前三章的学习,有没有发现这样写有什么问题,有没有觉得繁琐的?可能有人会说,之前的三篇总共加起来代码也就几十行哪里繁琐了。呵呵,是不是觉得EF很强大。但是其实按照之前的写法的话是比较繁琐的,为什么呢?这就是本文的重点 接着往下看!!!

      先看一下之前的配置类

      技术分享

      回顾我们的范例是只有两张表,然后需要配置映射关系的时候在 DbContext,的OnModelCreating进行配置。但是如果有几十张而且关系比较复杂的表,如果到放到这个OnModelCreating里面去写的话会不会觉得太乱没有条理性,甚至关系都已经分不清了。

    

      那接着就要想办法,怎么能让每个表的关系就只在一个实体关系配置类进行配置。

      具体的内容往下看


       上面的内容不知道你看懂了没有,或者说我说的不清楚,解决办法就是 我们可以针对每个实体来创建一个配置类或者公用的配置类来完成关系映射的设置。那我们就开始做吧。

1、在Model下面新建了一个配置文件夹

技术分享

2、同时针对之前写的两个实体新建了一个配置类

技术分享

3、核心代码来了。

    以上两步动动鼠标就可以搞定。那具体的代码就在这里了。我们先来看看用户信息的映射类。

/// <summary>
    /// 博客用户信息映射类
    /// </summary>
    public class BlogUserConfiguration : EntityTypeConfiguration<BlogUser>
    {
        public BlogUserConfiguration()
        {
            //设置主键
            HasKey(m => m.BlogUserId);
        } 
    }

    简单吧! 我们把之前OnModelCreating配置的东西就可以移到每个对应的实体中,这个类核心的地方就在于引用了EntityTypeConfiguration那为什么要引用它呢?

    下面的这句是我们第二篇里面写的代码,你鼠标放到HasKey查看引用。

modelBuilder.Entity<BlogUser>().HasKey(m => m.BlogUserId);

    调到下面这个

技术分享

    现在知道为什么要引用EntityTypeConfiguration吧! 不引用的话 那我们在构造方法里面的配置就没法写了。

4、最后一步,修改DbContext里面的OnModelCreating方法 注释掉之前的代码。每个类改成一行代码实现。

  技术分享

5、完成,运行你的代码 是不是也是出现了之前的正确页面。

 

 

大家如果有什么不懂的可以留言,也欢迎大家指导通过进步。

一步一步学EF系列【4、升级篇 实体与数据库的映射】

原文:http://www.cnblogs.com/liupeng/p/4797367.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!