EF中的transaction的使用范例】的更多相关文章

注意一点: 在EF中使用事物后,对于一个新增的model,在saveChanges后,可以得到该实体的自增ID,但在提交事物之前, 该数据并没有真正的新增到DB中,但此时可以得到model新增的自增ID,程序中可以使用,很方便! 例如下面的series实体在新增时,下面新增level时就可以直接使用,但此时的series并没有真正的新增到db中. /// <summary>        /// 导入汽车维护数据        /// </summary>        /// &…
1.EF中使用事务: using (TransactionScope tran = new TransactionScope()) { try { using(var _context = new DbContext()) { //执行相关操作 _context.SaveChanges(); } using(var _context2 = new DbContext()) { //执行相关操作 _context2.SaveChanges(); } tran.Complete(); } catch…
What? 首先,说一下什么是EF Core中的Transaction Transaction允许以原子方式处理多个数据库操作,如果事务已提交,则所有操作都应用于数据库,如果事务回滚,则没有任何操作应用于数据库. 所谓原子方式 是指对数据库的每一个操作是对立开来的,但是多个操作能合成一个整体(个人理解). 当操作到某一步失败了,那么会触发事物的回滚,把前面成功的操作也进行撤销,为什么这一操作这么重要呢?我举个例子你就知道了 就那拿一行转账这件事情来说.正常的A给B转账X元有两步: 1. 从A的账…
EF中使用事务 这节介绍EF6中事务的使用.EF core中事务的使用方式和EF6中一模一样. 1.EF中的默认的事务 默认情况下,当我们执行一个SaveChanges()方法时就会新建了一个事务,然后将context中的CUD操作都在这个事务中进行.Context中有多个SaveChanges()时,每一个SaveChanges()都会执行一个单独的事务.一个栗子: using (var context = new SchoolContext()) { context.Database.Log…
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/relationship-in-entity-framework-using-code-first-approach-w/ In this article, you will learn about relationships in Entity Framework using the Code First Approach with Fluent API. 在这篇文章中,你将会学习到使用EF…
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/code-first-migrations-with-entity-framework/ 系列目录: Relationship in Entity Framework Using Code First Approach With Fluent API[[使用EF Code-First方式和Fluent API来探讨EF中的关系]] Code First Migrations with Enti…
随手记录一下,这是针对原文错误的修改. 原文:EF中扩展出Between操作符 直接使用是错误的,修改后的扩展方法: /// <summary> /// 扩展 Between 操作符 /// 使用 var query = db.People.Between(person => person.Age, 18, 21); /// </summary> /// <typeparam name="TSource"></typeparam>…
在EF中,当在dbset使用join关联多表查询时,连接查询的表如果没有建立相应的外键关系时,EF生成的SQL语句是inner join(内联),对于inner join,有所了解的同学都知道,很多时候这并不是我们的本意,实例如下: var list = from o in context.CTMS_OD_ORDERS join d in context.CTMS_SUP_DOCTOR on o.OWNERDOCID equals d.USERID join e in context.CTMS_…
EF to sql string sql = "select T_Task.BSID,T_Task.CloseDate,T_Task.CompleteDate,T_Task.CloseUser,T_Task.TaskID,T_BaseStation.Name from T_Task " + "inner join T_BaseStation on T_Task.BSID=T_BaseStation.BSID"+ " where " + sqlta…
回到目录 Entityframeworks很聪明 不错,非常不错!ef里的contains比linq to sql里的contains有了明显的提升,事实上,是在进行SQL语句翻译上有所提升,在linq to sql里不支持iqueryable的contains集合,它只支持本地集合进行contains,而本地集合的contains会被.net翻译成sql语句是where in (...),即集合有多个元素,在in里就会被列举多少次,这个在性能上是非常低下的,不提倡的,而且它还有长度限制,最多本…
现在使用多数的数据库是关系型数据库,那么表与表之间的关系就会显得尤其重要,对于数据的CRUD处理和以后数据的分析有很大的好处.下面是对于数据库中对表关系的理解以及在EF中使用Fluent API来创建这种关系的例子. 数据库中实体之间的联系 书中语录:在现实世界中,事务内部以及事务之间是有联系的,这些联系在计算机里面叫做实体之间的联系和实体内部的联系,内部的联系就是组成实体属性之间的联系,而实体之间的联系可以分为三类.(1:1, 1:n, n:n) 一:一对一联系(1:1) A实体集中每一个实体…
在EF 中怎么使用事务? 这个问题纠结了我好久,直到有人跟我一起讨论,我和同事一起讨论查资料. 查的好多资料都是使用 using (TransactionScope scope = new TransactionScope()) { //具体代码内容 scope.Complete(); } 这种方式.而我在实际使用中是没法使用的. 所以我就一直找其他的方式,无意中看到某个网站的的database,然后我就采用了下面的方式: using (var dbContext = new TopOnline…
在EF中有些添加的字段 文本显示超多文字,想截取显示又没有截取功能. 怎么办? 我们可以在EF中类的属性中设置 你想限制这个用户名只能有10个字符长度 public String UserName { get{return username;} set{if(value.Length<=10){username=value;}} }…
例如:根据Para表中的type和paraid 字段进行比较 public class TypeComparer : IEqualityComparer<Para> { bool IEqualityComparer<Para>.Equals(Para x,Para y) { if (x == null) return y == null; return x.type == y.type&&x.paraid ==y.paraid ;//如果有英文,考虑比较大小写 }…
在使用EF的过程中,我们经常会遇到需要批量操作数据的场景,批量操作有的时候不仅能提高性能,比如使用SqlBulkCopy进入批量插入的时候,而且比较方便操作,提高效率.那么这篇文章就来总结EF中的那些批量操作. 插入 1,单个插入 单个插入很简单,只需要构造好实体,然后调用DbSet的Add方法,最后SaveChanges就行,示例代码如下. using (var db = new PackageFHContext()) { // 单个插入 var entity = new ProdImage…
EF中的增删改查: 实现步骤: 1.声明一个EF的上下文. bjhksjEntities dbContext = new bjhksjEntities(); 2.声明一个实体. HKSJ_USERS user = new HKSJ_USERS(); user.LoginName = "ssss"; user.Mail = "ssss"; user.PassWord = "ssss"; user.Plane = "ssss";…
EF中使用SQL语句或存储过程 1.无参数查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToList(); 2.有参查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes where id=@ID ",new SqlParameter("@ID&quo…
.NET在EF中使用sql,用动态类吧! 前言 在.NET中使用Entity Framework能快速.方便地结合LINQ来对数据库进行一系列的增删改查操作.但是由于EF根据表达式最后生成通用的sql来执行,进行具体的数据库操作.根据本人使用EF的经验,对于增.删.改的操作,可以直接使用EF的接口进行快速开发.但是对于查询的操作,最好是使用EF调用sql来操作. 问题呈现 在EF中调用sql进行数据查询后,需要返回一个指定类型的数据列表,那么这个类型是需要在调用的时候指定的.我们就会遇到这种问题…
本文转载:http://www.cnblogs.com/daimage/archive/2012/07/04/2575844.html EF中Database.SqlQuery<TElement> Method (String, Object[]) 可以直接执行SQL语句 但以为object[]参数和在ado.net中一样呢 开始就按ADO.NET中的 写法 sql为:update Product_Union set a=@a where b=@b 如 var parameters = new…
关于EF中ApplyCurrentValues和ApplyOriginalValues区别:两者都是编辑数据时使用. //        // 摘要:        //     将 System.Data.Objects.ObjectStateEntry 的 System.Data.Objects.ObjectStateEntry.CurrentValues        //     属性设置为与所提供对象的属性值相匹配.        //        // 参数:        // …
EF中使用语句 或存储过程 查询 1.无参数查询 var model = db.Database.SqlQuery("select* from UserInfoes ").ToList(); 2.有参查询 var model = db.Database.SqlQuery("select* from UserInfoes where id=@ID ",new SqlParameter("@ID",id)).ToList(); 3.结合linq查询…
EF中主表和附表一起提交的话,如果主附表的主键外键已经设定,如果新增同时新增主表和附表的记录,那么在EF同时提交时,不需要人为的设定附表的主表的主键值,EF会自动为附表添加外键值.…
EF中使用带参数的SqlQuery进行查询时,抛出"另一个 sqlparametercollection 中已包含 sqlparameter"异常. 这是由于SqlParamerterCollection中同样的参数不能重复添加.即在后续的操作中进行了一次以上的查询. 可以使用db.Database.SqlQuery(sql, param).ToList()的方式避免此异常.这种方式用于分页时不合适,因为所有数据都会都加载到内存了 或者对sql语句使用占位符的语法.如: slect *…
使用DbSet的Local属性可以访问当前context中被追踪且没有被标记为删除的实体(内存中的数据) using (var context = new BloggingContext()) { // Load all blogs from the database into the context context.Blogs.Load(); // Add a new blog to the context context.Blogs.Add(new Blog { Name = "My New…
EF中的查询执行时机:1. foreach进行枚举2. ToArray.ToList.ToDictionary3. Linq的一些操作,如First.Any4. DbSet上的Load操作.DbEntityEntry.Reload和Database.ExecuteSqlCommand 在web application中,每一个请求使用一个context实例:在WPF中,每个form使用一个context实例context不是线程安全的 加载实体的方式: 1.贪婪加载(eager loading)…
>导航属性: 01.个人理解就是Ef中的属性在实体数据表中不存在(先这么认为); 02.就是除了根据表中列映射出的属性 之外根据表与表之间的关系的关联属性.方便操作与之关联的表; 例如: 有 表A 表B 的关系是1对多,根据A,B表创建A类和B类 那么在A类中除了根据表中列映射出的属性,还要根据表之间的关联关系创建一个B类型的ICollection<>集合属性,就叫做导航属性 而B类除了根据B表中的列创建的属性,还要创建一个A类型的导航属性, 说白了就是根据主键表创建的类 必须创建一个根…
写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功),我摸索出了一种简单有效的方法,这里分享给大家. EF是Entity Framework(实体框架)的简写,是微软出品的用来操作数据库的一个框架,会ASP.NET MVC的朋友对他肯定都不陌生.由于学艺不精,我对EF存在一疑虑,就不以[提问]的方式来问了,我以[总结]的方式来表达,如果总结有误的地…
1.DbContext(上下文类) 在DbFirst模式中,我们添加一个EDM(Entity Data Model)后会自动生成一个.edmx文件,这个文件中包含一个继承DbContext类的上下文实例,DbContext是实体类和数据库之间的桥梁,DbContext主要负责与数据交互,主要作用: 1.DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >). 2.DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库.…
EF中的持久性场景 使用EF实现实体持久化(保存)到数据库有两种情况:在线场景和离线场景. 1.在线场景 在线场景中,context是同一个上下文实例(从DbContext派生),检索和保存实体都通过同一个context上下文,因此在线场景中的持久化十分简单. 这种方案适用于连接本地数据库或同一网络上的数据库. 优点: 执行速度快.上下文跟踪所有实体,并在实体发生更改时自动设置适当的状态. 缺点: 上下文保持在线状态,因此与数据库的连接保持打开状态.利用更多资源. 2.离线场景 离线场景中,使用…
EF中的高并发 这里只介绍EF6中database-first开发方案的高并发解决方案,code-first开发方案中的高并发会在以后的EF CodeFirst系列中介绍. EF默认支持乐观并发:我们从数据库加载了一条数据,这是有人修改了这条数据,而我们手中用的还是旧数据,这就出现了脏读,这个时候我们修改了这条数据然后执行SaveChange()会发生什么呢?EF在保存数据时会首先查看数据库中的数据有没有改变过,数据没有改变就执行保存:数据改变了会抛出异常,我们再次提交前必须解决冲突(提到解决冲…