ModelFirst就是先设计实体数据类型,然后根据设计的数据类型,生成数据库表

1.新建项--ADO.NET实体数据模型--空数据模型--进入模型设计器(点击xxx.edmx文件也能进入设计器)。

2.从工具箱中,拖一个数据模型(或右击,添加实体,注意,“实体名称”和“实体集“不要留有中文)--右击新建属性。

*实体名称就是数据对象类的名称,实体集就是对应表名的名称

*新建的属性,按F4能迅速打开属性设置,能设置是否为NULL,默认值,数据类型等等。

*如果设置为默认值,那么在实体类的构造函数中,会给属性赋初值。

*新建一个实体,对应就是新建一个数据表

3.右击,添加关联,能设置“一对多关系”,那么,将来在写代码的时候,假如Model1为一,Model2为多,

就可以 : Model1.model2的方式,来访问表2的内容了

*在数据模型上,就表现为:

Model1中,多了一个名字为Model2的属性,而Model2中,就多了类型为Model1的属性。

***而看C#代码,就表型为:

Model1中,除了自己的固有属性外,多了 public virtual ICollectoin<Model2> Model2{get;set;}

Model2中,除了自己的固有的属性外,多了 public int  ModelID{get;set;}和

public virtual Model1 Model1{get;set;};

***而从数据库表的设计来看,就是主键和外键的关系。

4.可根据模型生成SqlServer数据库,在模型设计器中,右击“根据模型生成数据库”。

(在创建数据库时,要选择“是,在连接字符串中包括敏感数据”,不然就要自己填账号密码了)

5.在第4步之后,就会生成XXXModel.edmx.sql文件,右击“执行”,就执行sql语句,创建数据库和表了。

**插入操作

var dbContext = new XXXModelContainer();

//往Model1表中添加mdel1

var model1 = new Model1();

dbContext.Model1.Add(model1);

//往model2表中添加model2

var model2 = new Model2();

dbContext.Model2.add(model2);

var model2_ = new Model2();

dbContext.Model2.add(model2_);

//使model1和两个model2关联

model1.Model2.add(model2);

model1.Model2.add(model2_);

//保存,执行Sql

dbContext.SaveChange();

***修改操作

var model1 = new Model1();

model.ID = 1;//ID一定要对,要是ID为主键了话,如果不知道ID,那么就不能New,要查找到对象;

model.属性1= value1;//

dbContext.Entry(model1).State = EntityState.Modified;//要修改此对象

dbContext.Entry(model1).Property(m=>m.属性1).IsModified = true;//要修改此对象的属性1

dbContext.SaveChange();

***查询操作

var findModel1 = from m in dbContext.Model1

         where m.属性1 = value

         select m ;

//实事上,执行完此行,并不会马上查询,要使用到findMode1这个变量时才会执行Sql语句去查询

**在查询Model1时,也会查询model1.Model2,并还原为对象。

***

使用

foreach ( var m1 in findModel1)//查询了一次sql语句,将符合属性1 = value的Model1对象查出来遍历

{

   foreach(var m2 in m1.Model2)//每次遍历,都会查询一次sql语句 , 根据model2. model1ID == m1.ID来查,

所以Model1.Model2要写成ICollection<Model2>,而不是List<>,因为要执行sql语句的

  {

    

  }

}

学习笔记31_ORM框架ModelFirst设计数据库的更多相关文章

  1. Android:日常学习笔记(10)———使用LitePal操作数据库

    Android:日常学习笔记(10)———使用LitePal操作数据库 引入LitePal 什么是LitePal LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式 ...

  2. MongoDB学习笔记(2):数据库操作及CURD初步

    MongoDB学习笔记(2):数据库操作及CURD 数据库操作 创建数据库 首先MongoDB中数据库的创建和数据库的切换都是使用命令,USE DATABASE,如果要切换的数据库不存在则会进行创建, ...

  3. qt学习笔记(七)之数据库简介(所有支持数据库类型的列表)

    笔者最近用Qt写公司的考勤机.本来要求是要基于frameBuffer下用自己开发的easyGUI来进行上层应用开发,但是考虑到easyGUI提供的接口不是很多,就考虑用Qt来开发,顺带练练手. 废话不 ...

  4. Android学习笔记(十六)——数据库操作(上)

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类, ...

  5. java JDK8 学习笔记——第16章 整合数据库

    第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...

  6. EF6 学习笔记(五):数据库迁移及部署

    EF6学习笔记总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 原文地址:Code First Migrations and Deployment 原文主要讲两部分:开发环境下 ...

  7. Android 学习笔记之如何使用SQLite数据库来保存数据...

    PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite:   ...

  8. [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction

    1.Spring中的数据库支持 把具有相同功能的代码模板抽取到一个工具类中.2.关于jdbc template的应用 jdbcTemplate模板操作类,把访问jdbc的模板抽取到template中, ...

  9. [ 学习笔记 ] Hibernate框架学习之一

    一.JavaEE开发三层结构和三大框架的对应关系: Struts2框架 -> 表现层 web层(MVC是表现层的设计模型) 业务层 service层 Hibernate框架 -> 持久层 ...

随机推荐

  1. 特殊的ARP

    免费ARP 协议内容:是指主机发送ARP请求自己的IP地址 作用: 测试网络中是否存在相同的IP地址 更新网络中其他主机的地址绑定信息 补充:根据ARP协议规定,网络中的主机如果收到某个IP地址的AR ...

  2. 彻底理解CORS跨域原理

    背景 现在的前端开发中都是前后端分离的开发模式,数据的获取并非同源,所以跨域的问题在我们日常开发中特别常见.其实这种资料网上也是一搜一大堆,但是都不够全面,理解起来也不够透彻.这篇文章就结合具体的示例 ...

  3. MongoDB 学习笔记之 批处理

    批处理: MongoDB批处理方式有2种, 有序插入(有序仍是顺序处理的.发生错误就停止.) 无序插入(无序列表会将操作按类型分组,来提高性能,因此,应确保应用不依赖操作执行顺序.发生错误继续处理剩余 ...

  4. QQ第三方授权登录OAuth2.0实现(Java)

    准备材料 1.已经备案好的域名 2.服务器(域名和服务器为统一主体或域名已接入服务器) 3.QQ号 4.开发流程:https://wiki.connect.qq.com/%E5%87%86%E5%A4 ...

  5. [以太坊源代码分析] I.区块和交易,合约和虚拟机

    最近在看以太坊(Ethereum)的源代码, 初初看出点眉目. 区块链是近年热点之一,面向大众读者介绍概念的文章无数,有兴趣的朋友可自行搜索.我会从源代码实现入手,较系统的介绍一下以太坊的系统设计和协 ...

  6. SQL SERVER数据库日常使用总结

    以下内容为平时工作自己个人总结,仅供参考,欢迎交流 SELECT A.CBM,A.CMC,SUM(B.MJE)MJE FROM YXHIS..TBZDZTHZ A,YXHIS..TBZDZTMX B ...

  7. CS184.1X 计算机图形学导论 罗德里格斯公式推导

    罗德里格斯公式推导 图1(复制自wiki) 按照教程里,以图1为例子,设k为旋转轴,v为原始向量. v以k为旋转轴旋转,旋转角度为θ,旋转后的向量为vrot. 首先我们对v进行分解,分解成一个平行于k ...

  8. 防止CSRF跨站请求伪造

    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站 ...

  9. veil-Evasion免杀使用

    Veil-Evasion 是 Veil-Framework 框架的一部分,也是其主要的项目.利用它我们可以生成绕过杀软的 payload   kali 上并未安装,下面我们来进行简单的安装.我们直接从 ...

  10. Dart:1.Dart开发环境配置

    一 . Windows 环境 1 . choco 安装 Dart SDK 建议直接使用 choco 安装,关于 choco 如何使用可以参照 https://chocolatey.org/ 官方文档地 ...