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

摘要:
EntityFramework的小实例:向项目中添加实体类并执行插入操作1&gt创建控制台程序2&gt添加ADO。NET实体数据模型,并选择相应的数据库和表(StudentModel.edmx)3&gt控制台代码staticvoidMain(string[]args){//创建网关接口。TestData是数据库名称TestDataEntitiesd=newTestData
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 对象

免责声明:文章转载自《Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇运维标准化与流程化建设深度指南(转)cke点击时初始化编辑器后光标恢复的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

根据ID和parentID利用Java递归获取全路径名称

如下图所示,本文参考资源:https://jie-bosshr.iteye.com/blog/1996607 感谢大佬的无私奉献。 思路:定义一个方法getParentName参数为int类型的configId,返回类型为String类型.在方法getParentName内部进行如下操作:1 根据当前节点configId查询数据库,得到一条记录,存入实体...

ssm+mybatis无法给带有下划线属性赋值问题,无法获取数据库带下划线的字段值

1、配置问题 <!-- 是否开启自动驼峰命名规则(camel case)映射, --> <setting name="mapUnderscoreToCamelCase" value="true"/> 或者 //开启驼峰映射 bean.getObject().getConfiguration().setMapUnderscore...

@Data注解的使用

背景:在使用Java做后台开发的时候免不了会使用实体类,实体类通常我们会定义一些属性和get,set方法,虽然IDEA可以自动生成,但是页面会产生大量的冗余代码,看起来很乱 使用@Data注解就可以解决这个问题 @Data注解的功能:        1、@Data可以为类提供读写功能,从而不用写get、set方法。        2、会为类提供 equal...

使用Hibernate

1、Hibernate框架设计原理 1)设计原理 Hibernate采用ORM思想对JDBC进行封装,Hibernate框架是ORM思想的一种实现,解决对象和数据库数据映射问题 Hibernate提供一系列API,允许我们直接访问实体对象,然后根据ORM映射关系,转换成SQL去执行,从而达到访问数据库的目的。 2)ORM思想 ORM(ObjectRela...

Swagger学习笔记

查看swagger教学视频,请点击 《狂神说java》: https://www.bilibili.com/video/BV1Y441197Lw?p=1 记得投币三连呀~~ Swagger 学习目标: 了解Swagger的作用和概念 了解前后端分离 在SpringBoot中继承Swagger Swagger简介 前后端分离 Vue + SpringBo...

gson 生成的json字符串带u003c,u003d,u003e的解决方案(gson将实体类转json)

1.情景展示 如上图所示,使用谷歌的Gson将实体类转json字符串,如果实体类的属性值,出现大于号、小于号、等号等符号时,调用GsonBuilder进行转换时,这些符号会被强制转换成unicode编码。 如何解决这个问题? 2.原因分析 错误方式一:使用replaceAll() 错误方式二:使用iso-8859-1解码 3.解决方案 方式一:使用...