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 是生成的实体模型就是 映射表,里面包含对象于表的定义
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();
}
}
ObjectContext封装 .NET Framework 和数据库之间的连接。此类用作“创建”、“读取”、“更新”和“删除”操作的网关
ObjectContext 类为主类,用于与作为对象(这些对象为 EDM 中定义的实体类型的实例)的数据进行交互
ObjectContext 类的实例封装以下内容:
a> 到数据库的连接,以 EntityConnection 对象的形式封装。
b> 描述该模型的元数据,以 MetadataWorkspace 对象的形式封装
c> 用于管理缓存中持久保存的对象的 ObjectStateManager 对象
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作的更多相关文章
- Abp项目中的领域模型实体类访问仓储的方法
首先声明,不推荐使用这种方法.实体访问仓储是不被推荐的! 1.简单粗暴的方法 Abp.Dependency.IocManager.Instance.Resolve>(); 2.绕个弯子的方法 首 ...
- 在vue项目中添加一个html页面,开启本地服务器
在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...
- 实际项目中遇到EF实体类的操作问题及操作方法
之前一直做ASP,都是直接写数据库操作语句,但是现在使用linq或者EF了,具体数据库操作不会了,遇到几个问题,然后经过查找资料解决了,记录一下. 一.遇到序列化问题 遇到循环引用问题,我的项目是一个 ...
- 全栈之路-小程序API-SpringBoot项目中参数校验机制与LomBok工具集使用
参数校验机制在web开发中是非常重要的,每当看到现在所在公司的校验代码,我都有头疼,每一个接口都是重新写参数的校验,有些复杂的接口,参数的校验甚至占了整个接口代码量的挺大一部分的,看着我都有些头疼,我 ...
- 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型
第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...
- 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等
设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...
- 如何在VUE项目中添加ESLint
如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...
随机推荐
- JS继承的几种方式
JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一. 既然要实现继承,那么我们先定义一个父类: // 定义一个动物类 function Animal (name) { // 属性 this.n ...
- 学习微信小程序之css13关于盒子外边距的合并
- 国外一些好用的UX/UI设计工具和资源分享
国外一些好用的UX/UI设计工具和资源分享 你今天使用的设计工具也许不再适合以后的网页和APP设计项目了.新的工具不断的推出市场,目标只有一个,让你的工作更快.更容易而且工作成效更好.今天分享的这些U ...
- 从bug中学习怎么写代码
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:从bug中学习怎么写代码.
- iframe框架自适应高度 uncanght SecurityError: Blocked a frame with origin "null" from accessing a frame ....
来源于crm项目的contact/edit.html 一.背景是这样的 最近在做crm系统的前端页面,有一个页面呢,点击“查看全部信息”时会弹出,这个弹窗里面又有分页导航,分页不是使用ajax 异步刷 ...
- 揭秘淘宝自主研发的文件系统:TFS
目前,国内自主研发的文件系统可谓凤毛麟角.淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优 ...
- 步步为营Hibernate全攻略(一)构建Hibernate框架环境
任何一项新技术的出现都有它的必然性,Hibernate也不例外,所以在掌握Hibernate的具体应用之前我们一定先要了解Hibernate是什么?使用Hibernate会给我们的程序开发带来哪些好处 ...
- shell脚本结构示例1
2013年以来自己因为偷懒,少写了很多东西,今年计划把以前积累的总结出来. 先从shell开始写起吧. 干了快3年游戏运维,期间经常会写一些shell本,不少脚本其实有很多可以复用的部分. 按照自己的 ...
- Nginx高性能服务器安装、配置、运维 (2) —— Nginx安装
三.Nginx 安装 使用SecureCRT以Root身份登录阿里云,在安装Nginx前先做好阿里云磁盘挂载 -------------- 挂载磁盘 -------------- 1.df -h #显 ...
- Java并发——使用Condition线程间通信
线程间通信 线程之间除了同步互斥,还要考虑通信.在Java5之前我们的通信方式为:wait 和 notify.Condition的优势是支持多路等待,即可以定义多个Condition,每个condit ...