C#+EntityFramework编程方式详细之Model First
Model First
Model First模式即“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在VS中通过设计对应的数据模型来生成数据库和数据类。
为了与上篇的Code First加以区分,这里新建一个控制台程序EFTest1,然后添加新建项,选择 ADO.NET实体数据模型,名称输入EFDemoDBModel

点击添加

选择 空EF设计器模型 点击完成。然后在模型设计视图中,空白处右键,添加新实体学生类(Student)和科目成绩类(SubjectScore)


点击 确定,之后在

添加其他标量属性:Name和Age(Age为Int32类型,可选中它在属性中修改);同样的方式添加第二个实体SubjectScore,并添加SubCode和SubName属性:

下面添加二者之间的关系,Student和SubjectScore是一对多的关系,Student可以通过SubjectScores属性访问SubjectScore实体,并且添加了一个外键约束到SubjectScore中:
点击空白处,右键新增---关联



经过上述操作,到目前为止Model First中的Model已经创建结束,下面就需要生成到数据库了,在模型设计视图空白处选择“根据模型生数据库(G)…”:(这里是系统默认的master数据库,可根据自己需求更改,新建连接更换数据库)



下一步

下一步,
生成数据库界面,点击完成。
点击完后之后,会打开数据库脚本,有一个对话框弹出,询问时候执行脚本,点击是即可生成数据库,
脚本:

在模型保存后,生成了数据库上下文和实体类,并且打开了建表的脚本:

说明:如果没有上述界面的话,看看模型是否保存了,点击保存,就会有了,
如果数据库中表没有生成的话,打开脚本,点击左上加的执行按钮,执行即可,之后再到数据库刷新一下,即可

数据库

经过上述操作,数据库和实体类已经全部新建完毕。
下面我们就测试一下看看,如下

注意
如果出现下面的情况,就需要在EFDemoDBModelContainer中添加DbSet<Student>,DbSet<SubjectScore>

出现上述问题,那是因为,EFDemoDBModelContainer中没有生成DbSet<Student>,DbSet<SubjectScore>,所以要手动添加
如下:

这样EFDemoDBModelContainer中才能找到Students和SubjectScores
运行结果

注意:如果我们的模型发生改变,只需要在模型设计视图中修改模型,然后保存此时实体类就会相应改变,最后在重新在模型设计视图空白处选择“根据模型生数据库(G)…”,再重新执行生成的脚本即可。
C#+EntityFramework编程方式详细之Model First的更多相关文章
- C#+EntityFramework编程方式详细之Code First 数据迁移
在前几篇的C#+EntityFramework编程方式中介绍了C#+EntityFramework编程方式Code First ,Model First以及Dtatabase First 等编程方式, ...
- C#+EntityFramework编程方式详细之Database First
Database First “Database First”模式即“数据库优先”,其实Database First 与Model First 很类似,只不过一个是有数据可一个是创建数据库,具体的操作 ...
- C#+EntityFramework编程方式详细之Code First
Code First Code First模式即“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时只需要编写对应的数据类,然后自动生成数据库. Code F ...
- EF三种编程方式详细图文教程(C#+EF)之Code First
Code First Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的 ...
- EF三种编程方式详细图文教程(C#+EF)之Database First
Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天简单看一下 ...
- EF三种编程方式详细图文教程(C#+EF)之Model First
Model First Model First我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在V ...
- EF三种编程方式的区别Database first ,Model first ,code first
首先对于EF中先出现的datebase first和model first两种编程方式,其的区别根据字面意思很容易能够理解. datebase first就是代表数据库优先,那么前提就是先创建数据 ...
- Entity Framework 5.0系列之EF概览-三种编程方式
概述 在开发面向数据的软件时我们常常为了解决业务问题实体.关系和逻辑构建模型而费尽心机,ORM的产生为我们提供了一种优雅的解决方案.ADO.NET Entity Framework是.NET开发中一种 ...
- ASP.NET MVC下的四种验证编程方式[续篇]
在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注Validation ...
随机推荐
- Messenger更改系统语言以后无法登陆,提示“初始设置被修改”
在安装messenger机器上使用SQL management studio打开数据库,链接YCD的数据库,找到dbo.Dic_Defaults的表,编辑打开以后找到“CultureInfo”两项,删 ...
- laravel 远程一对多实例
/** * 关联楼宇推荐书关联表 * 远程一对一 */ public function buildingPanos() { return $this->hasManyThrough( 'App\ ...
- 映美FP-530K+打印发票卡纸
最近打发票卡纸了几次,只能作废掉,硬件不太好排查,卡纸都是在发票的中间位置,我在卡纸的时候观察了好几次,打开打印机盖子,直接裸露这样看里面的打印状况,目前发现了两种卡纸位置. 如图,一种是后面的黑色塑 ...
- ThreadPoolExecutor 中的 shutdown() 、awaitTermination() 、 shutdownNow() 的用法
shutdown和awaitTermination为接口ExecutorService定义的两个方法,一般情况配合使用来关闭线程池. 方法简介shutdown方法:将线程池状态置为SHUTDOWN.平 ...
- Linux 学习 (三) 文件搜索命令
Linux达人养成计划 I 学习笔记 locate 文件名 搜索速度比较快 只能根据文件名搜索 搜索的是保存在 /var/lib/mlocate 的数据库(每天更新一次) 新建文件需要执行 updat ...
- django rest framework serializers序列化
serializers是将复杂的数据结构变成json或者xml这个格式的 serializers有以下几个作用: - 将queryset与model实例等进行序列化,转化成json格式,返回给用户(a ...
- Linux NTP时间同步服务
NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议.它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网 ...
- To the moon HDU - 4348 (主席树,区间修改)
Background To The Moon is a independent game released in November 2011, it is a role-playing adventu ...
- python的内置模块xml模块方法 xml解析 详解以及使用
一.XML介绍 xml是实现不同语言或程序直接进行数据交换的协议,跟json差不多,单json使用起来更简单,不过现在还有很多传统公司的接口主要还是xml xml跟html都属于是标签语言 我们主要学 ...
- 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery )
一. 前言 在前面的两个章节中,我们分别详细介绍了EF的增删改的两种方式(方法和状态)和EF查询的两种方式( Lambda和Linq ),进行到这里,可以说对于EF,已经入门了,本来应该继续往下进行E ...