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的更多相关文章

  1. C#+EntityFramework编程方式详细之Code First 数据迁移

    在前几篇的C#+EntityFramework编程方式中介绍了C#+EntityFramework编程方式Code First ,Model First以及Dtatabase First 等编程方式, ...

  2. C#+EntityFramework编程方式详细之Database First

    Database First “Database First”模式即“数据库优先”,其实Database First 与Model First 很类似,只不过一个是有数据可一个是创建数据库,具体的操作 ...

  3. C#+EntityFramework编程方式详细之Code First

    Code First Code First模式即“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时只需要编写对应的数据类,然后自动生成数据库. Code F ...

  4. EF三种编程方式详细图文教程(C#+EF)之Code First

    Code First Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的 ...

  5. EF三种编程方式详细图文教程(C#+EF)之Database First

    Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天简单看一下 ...

  6. EF三种编程方式详细图文教程(C#+EF)之Model First

    Model First Model First我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在V ...

  7. EF三种编程方式的区别Database first ,Model first ,code first

    首先对于EF中先出现的datebase  first和model first两种编程方式,其的区别根据字面意思很容易能够理解. datebase  first就是代表数据库优先,那么前提就是先创建数据 ...

  8. Entity Framework 5.0系列之EF概览-三种编程方式

    概述 在开发面向数据的软件时我们常常为了解决业务问题实体.关系和逻辑构建模型而费尽心机,ORM的产生为我们提供了一种优雅的解决方案.ADO.NET Entity Framework是.NET开发中一种 ...

  9. ASP.NET MVC下的四种验证编程方式[续篇]

    在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注Validation ...

随机推荐

  1. 《Effective C++》继承与面对对象设计:条款32-条款40

    条款32:确定你的public继承塑模出is-a关系 public继承意味着is-a.适用于base class身上的每一个函数也一定适用于derived class. 条款33:避免遮掩继承而来的名 ...

  2. hdu 3037——Saving Beans

    Saving Beans Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  3. WebView 安全之 addJavascriptInterface

    WebView是Android平台下的一个重要组件,通常用来在Activity中嵌入一个简单的浏览器,实现在线网页浏览的功能.比如下面代码实现访问Google页面: WebView webView = ...

  4. [BZOJ 4819] [SDOI 2017] 新生舞会

    Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴. 有 \(n\) 个男生和 \(n\) 个女生参加舞会买一个男生和一个女生一起跳舞,互为舞伴. C ...

  5. Django_ORM_字段属性

    Django_ORM_字段属性 常用字段 AutoField int自增列,必填参 primary_key=True 默认会自动创建一个列名为id的列 IntegerField 一个整数类型,范围在 ...

  6. Magento 2 Error: A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.

    有时在Magento上进行调试会很烦人,特别是如果出现了一些问题,而不是在你实际编写代码时. 这是Magento管理面板上发生的事情.截至目前,它可能是三个原因之一,让我们讨论一下: 1.管理员密码 ...

  7. I2C 总线原理与架构

    一.I2C总线原理 I2C是一种常用的串行总线,由串行数据线SDA 和串行时钟线SCL组成.I2C是一种多主机控制总线,它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须 ...

  8. 测试框架httpclent 3.获取cookie的信息,然后带cookies去发送请求

    在properties文件里面: startupWithCookies.json [ { "description":"这是一个会返回cookies信息的get请求&qu ...

  9. 20175209 《Java程序设计》第二周学习总结

    教材学习内容总结 二三章介绍的主要是Java中的基本知识:数据类型及转换,数据的输入输出,数组,运算符表达式,和常见的一些语句,这些都是帮助我们学习Java的基本知识,而这些知识很大一部分都和C语言相 ...

  10. freemarker和thymeleaf的使用样例

    最近需要对公司项目首页使用Java模板重做,以提高首屏加载速度和优化SEO. 在选择模板时发现freemarker和thymeleaf最为常用. 两者最大的区别在于语法,对性能方面未作测试,具体性能测 ...