学习笔记31_ORM框架ModelFirst设计数据库

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语句的

  {

    

  }

}

 

转载于:https://www.cnblogs.com/pylblog/p/6978624.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值