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 = ; // 将实体对象添加到网关接口,插入操作
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 = ; //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() > )
{
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 的小实例:在项目中添加一个实体类,并做插入操作的更多相关文章

  1. Abp项目中的领域模型实体类访问仓储的方法

    首先声明,不推荐使用这种方法.实体访问仓储是不被推荐的! 1.简单粗暴的方法 Abp.Dependency.IocManager.Instance.Resolve>(); 2.绕个弯子的方法 首 ...

  2. 在vue项目中添加一个html页面,开启本地服务器

    在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...

  3. 实际项目中遇到EF实体类的操作问题及操作方法

    之前一直做ASP,都是直接写数据库操作语句,但是现在使用linq或者EF了,具体数据库操作不会了,遇到几个问题,然后经过查找资料解决了,记录一下. 一.遇到序列化问题 遇到循环引用问题,我的项目是一个 ...

  4. 全栈之路-小程序API-SpringBoot项目中参数校验机制与LomBok工具集使用

    参数校验机制在web开发中是非常重要的,每当看到现在所在公司的校验代码,我都有头疼,每一个接口都是重新写参数的校验,有些复杂的接口,参数的校验甚至占了整个接口代码量的挺大一部分的,看着我都有些头疼,我 ...

  5. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  6. 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等

    设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...

  7. 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能

    在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...

  8. 关于如何正确地在android项目中添加第三方jar包

    在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...

  9. 如何在VUE项目中添加ESLint

    如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...

随机推荐

  1. A Tour of Go Variables

    The var statement declares a list of variables; as in function argument lists, the type is last. pac ...

  2. firefox和chrome对于favicon.ico关于content-security-policy的不同处理

    1.favicon.ico是网站的title图标 2.在设置CSP时,举例如下,表示只允许来源为https://my.alipay.com的图片,如果不是,则向指定的url(report.php)发出 ...

  3. eclipse调试的基本意义

    step into就是单步执行,遇到子函数就进入并且继续单步执行: step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为 ...

  4. lock语句的递归问题

    原文地址 前几天在网上闲逛,无意中看到有这么一道题及其答案,如下: 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由. ) { i--; tes ...

  5. Wbemtest查询

    运行wbemtest,打开后连接命名空间,默认为“root\cimv2”,可以连接到”IIS管理命名空间(此为Windows Server 2008 R2)“ 查看该命名空间下所有可用的类:单击“枚举 ...

  6. eclipse加入git工具

    想必如今搞互联网编程的人没有人没有听过编程协作工具git了吧,命令行以下操作很方便.功能也很的强大. 可是对于java编程的人员,eclipse肯定是他们编程的神器(肯定是首选), 那么怎样在ecli ...

  7. Android代码中动态设置图片的大小(自动缩放),位置

    项目中需要用到在代码中动态调整图片的位置和设置图片大小,能自动缩放图片,用ImageView控件,具体做法如下: 1.布局文件 <RelativeLayout xmlns:android=&qu ...

  8. 敏捷软件工程(agile software development) VS传统软件工程(traditional software development)

    敏捷软件工程(agile software development) VS传统软件工程(traditional software development)      Agile principle  ...

  9. EL表达式中的“+-x/”四种运算符和条件,比较运算符等

    <%@page import="cn.hncu.domain.User"%><%@ page language="java" import=& ...

  10. Double跟double

    Double 是类 double是基础数据类型.Double类型是double的包装类,在JDK1.5以后,二者可以直接相互赋值,称为自动拆箱和自动装箱.看你的提示,我推测你的jdk版本在1.5以前. ...