EF ModeFirst初体验

VS2017+EF+Mysql生成实体数据模型(解决闪退的坑) 最近要使用VS2017+EF+Mysql,在生成实体数据模型踏过一些坑,在此做个总结。1.先下载并安装 mysql-connector-net-6.9.10.msi  和  mysql-for-visualstudio-1.2.7.msi ,现在官网提供的是mysql-connector-net-6.10.6,我试过,这个版本不行,原因后面再讲。2.通过nuget来安装 EntityFramewo... 阅读详情

在VS2015里面新建控制台项目,项目目录如下:


在建完控制台应用程序后在项目上添加【ADO.Net实体数据模型】,然后选择空的EF设计器模型。在设计器里面添加两个实体,实体关联成1对多的关系,然后再vs2015里面需要手动添加代码生成项,在设计器里面右键然后添加代码生成项,命名与实体数据模型相同,添加后会自动组织到DataModel.edmx下面。然后右键生成数据库,之后新建数据库生成脚本(DataModel.edmx.sql)执行脚本后数据库和模型就完成了。


使用EF进行简单的增删改查,首先创建数据上下文,这个数据上下文名字是EF自动生成需要到DataModel.Context.cs里面去查看。

DataModelContainer dbContext = new DataModelContainer();

1、新增

            UserInfo userInfo = new UserInfo();
            userInfo.UName = "刘备";

            dbContext.UserInfo.Add(userInfo);

            OrderInfo order1 = new OrderInfo();
            order1.Content = "第一个订单";
            dbContext.OrderInfo.Add(order1);

            OrderInfo order2 = new OrderInfo();
            order2.Content = "第二个订单";
            dbContext.OrderInfo.Add(order2);

            //关联三个实体(3种方式关联导航属性)
            //1、通过用户添加订单实体到自己的导航实体
            userInfo.OrderInfo.Add(order1);

            //2、通过订单指定用户实体
            order2.UserInfo = userInfo;

            //3、外键关联(如果UserInfo ID已经存在 不然只能用上面两种)
            //order2.UserInfoID = userInfo.ID;
2、修改

            UserInfo userInfoModify = new UserInfo();
            userInfoModify.ID = 1;
            userInfoModify.UName = "孙权";

            dbContext.Entry(userInfoModify).State = System.Data.Entity.EntityState.Modified;
            //修改单个属性
            //dbContext.Entry(userInfoModify).Property(u => u.UName).IsModified = true;
            
3、删除

            OrderInfo orderInfoDel = new OrderInfo();
            orderInfoDel.ID = 2;
            dbContext.Entry(orderInfoDel).State = System.Data.Entity.EntityState.Deleted;

4、查询

            IQueryable<UserInfo> temp = from u in dbContext.UserInfo
                                        where u.ID > 0
                                        select u;
            //1、linq表达式转成Expression类型
            //2、给Type ElementType赋值
            //3、给Iqueryable Provider赋值,ef provider(根据dbcontext 数据上下文)
            foreach (var user in temp)
            {
                Console.WriteLine("ID:" + user.ID + "      UName:" + user.UName);
            }

Linq 可以 to (sql,ef,object.....)其原理就是IQueryable接口。接口中有三个属性如图:


其中Expression是表达式目录树实例描述表达式(实际是一颗表达式树),例如lambad表达式:System.Linq.Expressions.Expression<Func<int, bool>> expression = a => a> 0; 也可以转换成Expression实例,同样Linq表达式也转换成Expression。 而Type就是表示表达式类型,列如表达式的类型是linq 还是Lambad等。 Provider则是根据当前初始化的Provider(此处是EF Provider)进行解析执行表达式。


5、延迟加载

            IQueryable<UserInfo> temp1 = from u in dbContext.UserInfo
                                         where u.ID > 0
                                         select u;

            //第一种延迟加载是temp1在没用使用的时候 数据还没有查询出来。在用作其他linq查询时是当做子查询语句。
            IQueryable<UserInfo> temp2 = from u in temp1
                                         where u.UName != string.Empty
                                         select u;

            foreach (var user in temp2)
            {
                Console.WriteLine("ID:" + user.ID + "      UName:" + user.UName);
            }

            //第二种延迟加载 在模型对象里面有导航属性时候,当导航属性没有手动加载数据时我们使用导航属性EF会自动根据当前模型对象信息查询导航属性数据
            foreach (var user in temp2)
            {
                foreach (var order in user.OrderInfo)
                {
                    Console.WriteLine("ID:" + order.ID + "      Content:" + order.Content);
                }
            }

最后以上操作需要调用 dbContext.SaveChanges();  把上面的实体变化封装成sql 执行到数据库里面。

ADO.NET_Entity_Framework(使用EDM增删改查)C#实例代码 看完了这些我收集的经典实例相信大家均会用EDM了~ 立即下载

相关推荐

DataGridView 右键菜单复制(公共)

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler( (sender1, e1) => { if (e1.Button == MouseButtons.Right) {

沁心渃水 2829

CodeFrist、ModelFirst、DatabaseFirst

一、CodeFirst 使用System.Data.Entity.DbContext与System.Data.Entity.DbSet构建的数据模型,没有可视化文件但只有实体类的称为CodeFirst。   二、ModeFirst 选择项目-新建项目-数据-ADO.NET实体数据模型 单击 “添加” 按钮 空模型就是MF   三、DatabaseFirst 选择项目右键添加...

weixin_33711641的博客 589

Aurix TC387 Ethernet代码解析之二_移植

英飞凌官方仅提供了TC397的例程,故需通过TC397例程来移植到TC387新建工程里。TC397官方例程名称【Ethernet_1_KIT_TC397_TFT】,网络上可以免费获取到,此处不赘述。使用工具【

m0_69929716的博客 884

【转】EF三种编程方式的区别Database first ,Model first ,code first

首先对于EF中先出现的datebase first和model first两种编程方式,其的区别根据字面意思很容易能够理解。 datebase first就是代表数据库优先,那么前提就是先创建数据库。 model first就是代表model优先,那么前提也就是先创建model,然后根据model自动建立数据库。 这两EF的编程方式在使用的过程中的区别为: 在添加ADO.NET实体数据模型的时候,database first选择的是从数据库生成。 并且在数据结构发生变化的时候,data...

sinolover的专栏 1127

如何快速学习 PHP 编程:从入门到实战的高效路径

PHP高效学习路线摘要:4-8周掌握Web开发核心技能。阶段1(1周)搭建XAMPP/MAMP环境,掌握基础语法和变量处理;阶段2(2周)重点学习表单处理、会话管理和PDO数据库操作(防SQL注入);阶段3(2-3周)实战开发个人博客等小项目。关键原则:边学边练(每个知识点配3-5个案例)、优先掌握Web刚需技能(HTTP请求、数据库、动态页面)、善用官方手册。避坑点:密码必须加密、SQL使用预处理、统一UTF-8编码。建议每天2-3小时实操,通过项目驱动学习,快速形成开发能力。

2501_94233638的博客 1387

Labview_DQMH框架学习1--浅析

本文主要结合一个相对容易理解的例子,阐述 DQMH 框架的工作原理,希望对初学者有一定的帮助。

hrbeuxn的博客 3048

制作一个简单的EF框架(model)

简介 首先我们需要一个Vs,本人是2017企业版,win10系统18083,SQLserver2014,我们先了解一下什么是EF框架。 EF框架:如果我们制作了数据库,那么我们的VS中的实体就可以利用EF直接生成,如果我们有实体,那么我们就可以直接生成数据库,如此的简单。一般EF分为:DatabaseFrist、modelFrist、CodeFrist三种,今天我们以最常用的modelFrist为...

萍踪侠影 1393

miRNA测序数据生信分析——第二讲,数据库下载整理

一个非编码RNA的整合数据库,可用来识别鉴定各种类型的ncRNA。提供的是ncRNA在基因组上的基因序列,而非转录成熟ncRNA的序列。最新版:2022-11-02Rfam数据库中ncRNA类型分三大类:Cis-reg和Gene和Intron。这三大类又有子类。一个提供包括miRNA序列数据、注释、预测基因靶标等信息的全方位数据库,是存储miRNA信息最主要的公共数据库之一。最新版:2018-12-01。

weixin_44616693的博客 4098

.NET Core EF Model First(模型优先)

beforeCreate( 创建前 ) 在实例初始化之后,数据观测和事件配置之前被调用,此时组件的选项对象还未创建,el 和 data 并未初始化,因此无法访问methods, data, computed等上的方法和数据。 created ( 创建后 ) 实例已经创建完成之后被调用,在这一步,实例已完成以下配置:数据观测、属性和方法的运算,watch/event事件回调,完成了data 数据的初始化,el没有。 然而,挂在阶段还没有开始, $el属性目前不可见,这是一个常用的生命周期,因为你可以调用

weixin_55959870的博客 797

3D IC中Memory-on-Logic堆叠测试的DFT解决方案与工程实践

在半导体行业,随着摩尔定律逼近物理极限,3D IC技术通过芯片垂直堆叠实现性能提升和异构集成,已成为重要发展方向。其核心原理是利用硅通孔(TSV)或微凸块实现芯片间电气互连,将多个不同功能的芯片(如逻辑芯片与存储芯片)集成在一个封装内。这项技术的核心价值在于能大幅提升系统性能、降低功耗并实现更小的封装尺寸。然而,芯片堆叠后,传统的测试方法面临巨大挑战,尤其是测试访问存在物理屏障,无法直接探测被覆盖的芯片接口。为此,可测试性设计(DFT)成为确保3D IC可靠性与量产可行性的关键技术。它通过在设计阶段植入专用

weixin_42521058的博客 630

PT:pt write_change to innovus 脚本

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1525

【EF系列】ModelFirst实体优先

一、前言      在前文中我们介绍了DBFirst,它要求要现有数据库, 然后通过EF映射创建实体。非常简单易学。下面给大家介绍另外一种——ModelFirst,实体优先。二、内容介绍      Model First 是先利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。       通过实战演练来更好的展示:

哈士奇 8841

DeiT详解:知识蒸馏的Transformer

DeiT模型(8600万参数)仅用一台 GPU 服务器在 53 hours train,20 hours finetune,仅使用 ImageNet 就达到了 84.2 top-1 准确性,而无需使用任何外部数据进行训练,性能与最先进的卷积神经网络(CNN)可以抗衡。其核心是提出了针对 ViT 的教师-学生蒸馏训练策略,并提出了方法,使得在视觉领域训练得又快又好。

走在深度学习前沿的小宋 2636

first-order-model-master(avatarify一阶动态模型)代码解说(蚂蚁呀嘿 附完整运行代码)

1.按网上avatarify代码,first-order-model-maste解读,但是缺少运行的必要程序(vox-adv-cpk.pth.tar)。 2.又在网上搜到相关代码,运行如下。 3.

paul123456789io的博客 3764

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

modelfirst和dbfirst区别?

首先对于EF中先出现的datebase first和model first两种编程方式,其的区别根据字面意思很容易能够理解。 datebasefirst就是代表数据库优先,那么前提就是先创建数据库。 model first就是代表model优先,那么前提也就是先创建model,然后根据model自动建立数据库。 这两EF的编程方式在使用的过程中的区别为: 在添加ADO.NET实体数据模...

优快云 4980

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Model First(模型优先)

必备条件 要完成本项目你需要安装vs2010或者vs2012,如果你安装的是vs2010,那么,还要安装nuget,一个vs的包管理工具插件 1.建立应用程序 下面我们将建立一个控制台应用程序来说明database first的使用问题 .打开vs .菜单 文件->新建->项目 .在打开的窗口中,左侧选择window,右侧选择console application(控制台应用程序)

Hello World 3307

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Entity Framework快速入门笔记第四篇—ModelFirst

  前言:在上一篇博客中我们做了一个小的Demo,使用EF实现了对数据库的增删改查的操作,所谓学习,我们就要学会举一反三,所以好好学习一下上一篇的内容还是方便以后的扩展学习,这篇博客我们主要来研究一下ModelFisrt,这什么意思呢??拿中文说就是实体最先建立模型,也就是我们在不建立数据库的前提下,写入实体框架,让EF框架来帮我们完成建立数据库的动作,下面我们就详细来介绍一下,我们还是和上一章一...

weixin_33859665的博客 292

深入浅出EF之ModelFirst和DBFirst

深入浅出EF之ModelFirst和DBFirst

qq_43682716的博客 578

first-order-model实现照片动起来(附工具代码) | 机器学习

看到一个很有意思的项目,其实在之前就在百度飞浆等平台上看到类似的实现效果。 可以将照片按照视频的表情,动起来。看一下项目给出的效果。

阿良的博客 7181

EF之Model First模型优先

1、前言Model First顾名思义,先有实体模型,后有数据库,在本例中我们创建一个RightSystemDb的数据库,包含三张表,用户表、角色表、角色用户表。2、Model First实战示例首先打开VS2013创建一个控制台应用程序,命名为MyModelFirstDemo,创建完成以后,如下图: 选中解决方案中的项目名称,点击右键,选择“新建项”,如下图: 选中”ADO.NET实体

高级项目经理、专注于技术架构、分享项目管理及职场心得 2625

EF框架概述之Model First

简介    Model First是EF 4开始新增的功能,主要是提供给目前没有数据库,但又需要使用EF设计模型的程序员使用。正如其名,程序员要先在Designer内设计好模型的结构,再利用这个结构来生成数据库。步骤01    首先,依然是新增一个ADO.NET实体数据模型,但这次选择的是“空的EF Designer模型”,然后单击“完成”按钮。如下图:步骤02    完成后,会出现一个空白的De...

cgs的博客 1456

如何使用EF生成model实体

这个其实比较简单的,为了结合其他博客满足需求,大致的写一下。,连接oracle的比较麻烦,vs2013要装插件,试了很多次没实现,只能用sqlserver先用了。 首先新建一个类库项目,然后右键类库项目弹出窗口: ...

90e家 2089

EF基础篇-Model First

Model First 是先有模型,再根据模型创建数据库,进行相关的数据操作 1 新建一个控制台程序 2 右键添加 新建项 选择如图的ADO.NET实体数据模型 3 实体数据模型向导 选择如图空EF设计器模型 4 模型构造 完成上一步后,得到如图的设计文件,右键或从工具箱中拖拽实体 实体添加 完成后得到如图的实体模型 5 由模型构建数据库 右键选择“根据模型生成数据库” 数据库连接部分 6 打开数据库验证 7 实例操作 进行数据新增和查询 using (var scContext=new

arvinzd的博客 493

Win7 下安装XP Mode初体验

   Win7下体验XP的环境,用这种方式的确比单独用虚拟机安装一个XP环境来的方便。XP mod就是微软为以前的大多数XP粉丝顺利过渡到win7而设计的,这个环境就是一个模拟的XP环境。 安装也很简单,首先下载两个文件。 Windows Virtual PC RC简体中文版: 32位:http://download.microsoft.com/download/9/F/D/9FD8E...

weixin_33935777的博客 209

我整理的.Net FrameWork发展史

.Net FrameWork发展史 1.0 1.0是NET最早的一个版本,是第一个微软Visual Studio .NET的发行版的一部分。可以以一个独立且可重新分发的包的形式或在一个软件发展工具包集中被获得,不能安装在用户操作系统和服务器操作系统上。主要包括公共语言运行库CLR1.0、BCL类库和ASP.NET开发框架 CLR:1.0 C#:1.0 IDE:Visu

8155
上一篇: 电话通信PSTN及物理知识整理,VOIP发展梳理
下一篇: ASP.Net 在IIS中的处理过程
X_SpringSun
博客等级 码龄14年 17粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值