【EF系列】ModelFirst实体优先

一、前言

      在前文中我们介绍了DBFirst,它要求要现有数据库, 然后通过EF映射创建实体。非常简单易学。下面给大家介绍另外一种——ModelFirst,实体优先。

二、内容介绍

      Model First 是先利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。
      通过实战演练来更好的展示:

三、实战演练

首先打开VS2012 ,选择控制台程序:

这里写图片描述

                                                    图一 选择控制台程序

第一步 添加实体

然后在项目中添加ADO实体模型:

这里写图片描述

                                                   图二 选择ADO实体模型

这里写图片描述

                                                   图三 选择ADO实体模型

选择模型类型: 这里我们选择“空EF设计器模型”,有的版本也叫做“空模型”。

这里写图片描述

                                                   图四 选择模型类型

点击完成后,生成的界面:

这里写图片描述

                                                    图五 生成的界面

在模型设计视图中,添加新实体:

这里写图片描述

                                                    图六 添加新实体

这里写图片描述

                                                    图七 添加新实体

这里写图片描述

                                                    图八 添加新实体

添加实体的属性,属性分为三种:标量属性,导航属性,复杂属性。这三种属性会在下文给大家介绍。这里我们使用标量属性,生成新属性后,选中属性,点击F4,可以设置内容。

这里写图片描述

                                                    图九 设置属性

按照同样的方法,再创建一个实体。

这里写图片描述

                                                    图十 再创建一个实体

接下来添加二者之间的关系,“user”和“card”是一对多的关系。 右击user,点击新增,关联。

这里写图片描述

                                                    图十一 添加关系

选择合适的关系:

这里写图片描述

                                                    图十二 选择合适的关系 

添加完关系后的效果图:

这里写图片描述

                                                    图十三  关系后的效果图

第二步 根据模型生成数据库

确保数据库中已经存在一个空白数据库,这里我用代码建立了一个空的数据库,名字叫做EFModelFirst。

这里写图片描述

                                                    图十四  空白数据库

下面就需要生成到数据库了,在模型设计视图空白处选择“根据模型生成到数据库…”:

这里写图片描述

                                                    图十五 根据模型生成到数据库

相信大家对这个界面不陌生吧!

这里写图片描述

                                                    图十六 根据模型生成到数据库

这里写图片描述

                                                    图十七 选择数据库数据库

这里写图片描述

                                                    图十八 添加链接字符串

这里写图片描述

                                                    图十九 选择EF模型

这里写图片描述

生成数据库向导:

这里写图片描述

                                                    图二十 生成数据库向导

然后再点击完成即可,看到生成的Sql脚本:

这里写图片描述

                                                    图二十一 生成数据库SQL脚本

在空白处点击右键,选择执行,生成数据库:

这里写图片描述

                                                    图二十二  执行,生成数据库

第三步 增删改查

在类中写如下代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
using System.Data.Entity.Validation;


namespace EFModelFirst
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 添加数据
            //1.声明上下文
            ModelFirstModelContainer dbContext = new ModelFirstModelContainer();
            //2.对数据库的操作,添加数据
            //2.1 实例化实体,对实体赋值
            user u = new user();

            u.Id = 1;
            u.Name = "Ares";
            u.CreateDate = DateTime.Now;
            //2.2 增
            //实体附加到上下文
            dbContext.userSet.Attach(u);
            //添加到数据库
            dbContext.Entry(u).State = EntityState.Added;
            //3. 保存
            dbContext.SaveChanges();
            #endregion

            #region 查看数据库数据
            //方法一、使用 Linq 语句查询
            card c = new card();
            //1.Linq 语句
            var item = from s in dbContext.cardSet
                       select s;
            //遍历查询出来的内容
            foreach (var cardid in item)
            {
                Console.WriteLine("Linq查询Id结果是:" + cardid.Id);
            }

            //方法二、使用lambda查询
            var itemlambda = dbContext.cardSet.Where<card>(s => s.Id == 2).FirstOrDefault();
            Console.WriteLine("lambda查询Id结果是:" + itemlambda.Id);
            #endregion

        }
    }
}

执行结果:

这里写图片描述

四、小结

     通过这次的介绍,我们知道了可以通过Model实体来创建数据库,非常好的选择,希望能给大家带来帮助。下一篇会向大家介绍CodeFirst

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你个佬六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值