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. boj1267 Infinite’s Cave 树形dp + 背包

    题目链接:http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=1267         / ...

  2. 从java程序员到CTO的成长路线图

    很多新人不知道从事java开发,具体的发展路径是怎么样的,甚至很多人都不能区分程序猿和攻城师的区别.包括不少小白,从事java开发都半年,甚至1年了,对职业发展还没有清晰的认证.这非常不利于自己的发展 ...

  3. IOS学习笔记38--@class #import辨析 #include

    tyle="margin:20px 0px 0px; line-height:26px; font-family:Arial"> #include         区分 #i ...

  4. 五、SQL映射的XML文件

    MyBatis真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL映射的XML文件是相当的简单.当然如果你将它们和对等功能的JDBC代码来比较,你会发现映射文件节省了大约95%的代码 ...

  5. JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. 微信中QQ表情的解析(php)

    微信公众平台接受的消息中,标签是用'/:'开头的字符串表示的,假设要在网页上显示(比方制作微信大屏幕),就须要进行转换. 所以我向微信公众平台按顺序发送了各个QQ表情,在微信公众平台后台能够看到接受的 ...

  7. My安装Eclipse三种方法插件

    Eclipse它是一个开源项目,但非常需要手动集成插件,MyEclipse在Eclipse插件.但非常多时候MyEclipse相同须要再次安装插件,插件安装有三种方法,以下以SVN为例.具体阐述. E ...

  8. Java基础知识强化之集合框架笔记66:Map集合面试题之HashMap和Hashtable区别(重要)

    1. HashMap和Hashtable区别 ? • Hashtable:线程安全,效率低.不允许null键和null值 • HashMap:线程不安全,效率高.允许null键和null值 packa ...

  9. 3.linux安装vsftpd服务

    1.首先查看本地是否安装了vsftpd rpm -qa |grep vsftpd 2.安装vsftpd: yum install vsftpd 3.查询当前ftp状态 chkconfig --list ...

  10. ModelAndView使用方法

    配置支持ModelAndView 在application.xml中配置支持ModelAndView,配置方式有两种. 配置一 <bean id="ViewResolver" ...