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 ...
随机推荐
- 从java程序员到CTO的成长路线图
很多新人不知道从事java开发,具体的发展路径是怎么样的,甚至很多人都不能区分程序猿和攻城师的区别.包括不少小白,从事java开发都半年,甚至1年了,对职业发展还没有清晰的认证.这非常不利于自己的发展 ...
- storm出现的背景
storm出现的背景 互联网从诞生的第一时间起,对世界的最大改变就是让信息能够实时交互,从而大大加速了各个环节的效率.正因为大家有对信息实时响应.实时交互的需求,所以软件行业除了个人操作系统之外,数 ...
- 利用...来字符检測(swift)
利用...来字符检測(swift) by 伍雪颖 let test = "LesvIo" let interval = "a"..."z" ...
- Nessus漏洞扫描教程之配置Nessus
Nessus漏洞扫描教程之配置Nessus 配置Nessus 当安装成功Nessus工具后.就可以使用该工具实施漏洞扫描.为了使用户更好的使用该工具,将介绍一下该工具的相关设置.如服务的启动.软件更新 ...
- Android View.onMeasure方法的理解(转载)
一下内容转载自http://blog.sina.com.cn/s/blog_61fbf8d10100zzoy.html View在屏幕上显示出来要先经过measure(计算)和layout(布局).1 ...
- OOM-killer 线上设置 +vm +OOM机制
http://blog.csdn.net/tenfyguo/article/details/9409743 http://blog.csdn.net/tenfyguo/article/details/ ...
- sort函数的例子
10.11编写程序,使用stable_sort和isShorter将传递给你的elimDups版本的vector排序.打印vector的内容. #include<algorithm> #i ...
- hdu1016JAVA
import java.util.Arrays;import java.util.Scanner;public class Main { public static int kase=0,n; pub ...
- DW一些快捷键的使用
在键盘上敲空格的话可以使用shift+空格 如果要换行的话就可以使用的是 shift+enter
- UIPickerView(选择器)
UIPickerView也是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活. UIPicke ...