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


    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<Student>类型,继承IEnumerable<Student>
                // 继承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<Student> query = stuEntities.CreateQuery<Student>(sql);
                ObjectResult<Student> results = query.Execute(MergeOption.NoTracking);
    
                //return stu;
                return query.SingleOrDefault();
            }
        }
    复制代码
    EF中操作数据库的网关

    ObjectContext封装 .NET Framework 和数据库之间的连接。此类用作“创建”、“读取”、“更新”和“删除”操作的网关
    ObjectContext 类为主类,用于与作为对象(这些对象为 EDM 中定义的实体类型的实例)的数据进行交互
    ObjectContext 类的实例封装以下内容:
    a> 到数据库的连接,以 EntityConnection 对象的形式封装。
    b> 描述该模型的元数据,以 MetadataWorkspace 对象的形式封装
    c> 用于管理缓存中持久保存的对象的 ObjectStateManager 对象

  • 相关阅读:
    每日一道 LeetCode (30): 买卖股票的最佳时机
    每日一道 LeetCode (29):杨辉三角 II
    每日一道 LeetCode (28):杨辉三角
    每日一道 LeetCode (27):二叉树的最小深度
    分布式协调服务之Zookeeper集群部署
    JupyterLab 交互式笔记本的安装使用
    YOLOv4: Darknet 如何于 Ubuntu 编译,及使用 Python 接口
    YOLOv4: Darknet 如何于 Docker 编译,及训练 COCO 子集
    pybind11: C++ 工程如何提供 Python 接口
    Mysql锁
  • 原文地址:https://www.cnblogs.com/zhaodahai/p/6824501.html
Copyright © 2020-2023  润新知