博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
阅读量:5278 次
发布时间:2019-06-14

本文共 4093 字,大约阅读时间需要 13 分钟。

Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

1>. 创建一个控制台程序

2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(StudentModel.edmx)
3>. 控件台代码

static void Main(string[] args)        {            // 创建一个网关接口,TestData是数据库名            TestDataEntities td = new TestDataEntities();                        // 创建一个实体对象,Student是表映射过来的对象,将其赋值            Student st1 = new Student();            st1.StudentID = "s4";            st1.StudentName = "test1";            st1.Age = 20;            // 将实体对象添加到网关接口,插入操作            td.Student.AddObject(st1);            // 网关保存并改变            td.SaveChanges();            Console.WriteLine("添加成功!");        }

如上 StudentModel.edmx 是生成的实体模型就是 映射表,里面包含对象于表的定义

Entity Framework 增删改查 操作

1>. 基本同上
2>. 控件台代码

class Program    {        // 创建一个网关接口,TestData是数据库名,静态方法只能调用静态类        static TestDataEntities stuEntities = new TestDataEntities();        static void Main(string[] args)        {            // 创建一个实体对象,Student是表映射过来的对象,将其赋值            Student st1 = new Student();            st1.StudentID = "s4";            st1.StudentName = "小明";            st1.Age = 20;            //InsertStu(st1);            //DeleteStu("s4");            //Student stu2 = FindStudentByID("s4");            //stu2.StudentName = "小明";            //UpdateStu(stu2);            //Console.WriteLine(stu2.StudentName);                    }        // 添加操作        public static void InsertStu(Student stu)        {            // 将实体对象添加到网关接口,插入操作            stuEntities.Student.AddObject(stu);            // 网关保存并改变            stuEntities.SaveChanges();            Console.WriteLine("添加成功!ID:"+stu.StudentID);        }        // 删除操作        public static void DeleteStu(string ID)        {            Student stu = FindStudentByID(ID);            stuEntities.Student.DeleteObject(stu);            stuEntities.SaveChanges();            Console.WriteLine("删除成功!ID:" + stu.StudentID);        }        // 更新操作        public static void UpdateStu(Student stu)        {            // 其中 var 为 IQueryable
类型,继承IEnumerable
// 继承IEnumerable的类都能实现 foreach var student = from s in stuEntities.Student where s.StudentID == stu.StudentID select s; // 得到student集合里面的单一实体 var oldStu = student.SingleOrDefault(); // 修改对应的属性值 oldStu.StudentName = stu.StudentName; oldStu.Age = stu.Age; // 保存修改 stuEntities.SaveChanges(); Console.WriteLine("更新成功!ID:" + stu.StudentID); } // 更新数据 新方法 public bool UpdateEntity(MvcHotel.Model.Customer entity) { bool result = false; // 添加对象到上下文 he.Attach(entity); // 改变新加入对象的状态,设置为 已修改 he.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Modified); if (he.SaveChanges() > 0) { result = true; } return result; } // 查询操作 public static Student FindStudentByID(string ID) { // 方式1: Linq to EF // 根据ID查询Student,并得到集合中的单一实体 var stu = (from s in stuEntities.Student where s.StudentID == ID select s).SingleOrDefault(); // 方式2: Entity SQL string sql = "select Value c from TestDataEntities.Student as c "; ObjectQuery
query = stuEntities.CreateQuery
(sql); ObjectResult
results = query.Execute(MergeOption.NoTracking); //return stu; return query.SingleOrDefault(); } }
EF中操作数据库的网关

ObjectContext封装 .NET Framework 和数据库之间的连接。此类用作“创建”、“读取”、“更新”和“删除”操作的网关

ObjectContext 类为主类,用于与作为对象(这些对象为 EDM 中定义的实体类型的实例)的数据进行交互
ObjectContext 类的实例封装以下内容:
a> 到数据库的连接,以 EntityConnection 对象的形式封装。
b> 描述该模型的元数据,以 MetadataWorkspace 对象的形式封装
c> 用于管理缓存中持久保存的对象的 ObjectStateManager 对象

posted on
2017-05-08 12:20  阅读(
...) 评论(
...) 收藏

转载于:https://www.cnblogs.com/zhaodahai/p/6824501.html

你可能感兴趣的文章
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
jQuery之end()和pushStack()
查看>>
Bootstrap--响应式导航条布局
查看>>
Learning Python 009 dict(字典)和 set
查看>>
JavaScript中随着鼠标拖拽而移动的块
查看>>
HDU 1021 一道水题
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>
php每天一题:strlen()与mb_strlen()的作用分别是什么
查看>>
工作中收集JSCRIPT代码之(下拉框篇)
查看>>
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>
会话控制
查看>>
推荐一款UI设计软件Balsamiq Mockups
查看>>
Linux crontab 命令格式与详细例子
查看>>
百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html
查看>>
游标使用
查看>>
LLBL Gen Pro 设计器使用指南
查看>>
SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP
查看>>