Entity Framework 4.0并发处理的步骤

简介: 新用到了实体框架,用到了并发,参考以下的图书资料 Entity Framework 4.0 Recipes A Problem-Solution Approach ISBN-13 (pbk): 978-1-4302-2703-8 ISBN-13 (electronic): 978-1-4302-2704-5 http://apress.

新用到了实体框架,用到了并发,参考以下的图书资料

Entity Framework 4.0 Recipes A Problem-Solution Approach

ISBN-13 (pbk): 978-1-4302-2703-8

ISBN-13 (electronic): 978-1-4302-2704-5

http://apress.com/book/view/1430227036

具体的步骤如下:

建立模型

添加Ado.net Entity Model后类似如下添加TimeStamp并发控制的时间戳

clip_image002

注意:

并发控制不一定非要加时间戳,如果不加时间戳,那需要把那个每次更新的字段的并发模式设置为Fixed. 一般的使用加时间戳比较方便

生成数据库

这个是VS2010新加的功能,vs2008 sp1没有这个功能,很好用,可以实现从模型进行开始设计

clip_image004

如上,模型上右键,可以生成数据库脚本,不过这个生成的脚本对于TimeStamp字段的处理有些问题,默认模型生成的字段不是timestamp数据库类型[应该可以在SSDLToSQL10.tt文件中修改,没有试验],可以采用以下方法处理,新加一个sql文件,类似如下:

alter table DemoSet drop COLUMN [TimeStamp]

alter table DemoSet add [TimeStamp] timestamp not null

 

以后从模型更新数据库时只要先运行生成的sql脚本,再运行一下这个脚本就行了

并发处理

using (TestContainer context = new TestContainer())

{

//新加一个记录

Demo d = new Demo() { Name = "a", Phone = "123" };

context.DemoSet.AddObject(d);

context.SaveChanges();

//使用SQL执行一个更新模拟并发的情况

d = context.DemoSet.First();

context.ExecuteStoreCommand(@"update DemoSet set Phone='456' where Id = @p0", new object[] { d.Id });

///出现并发冲突的处理

try

{

d.Phone = "321";

///也可以强制采用最后一次的更新为准的方式,如下屏蔽的两行

///context.DemoSet.MergeOption = MergeOption.PreserveChanges;

///d = context.DemoSet.First(p => p.Id == d.Id);

context.SaveChanges();

Console.WriteLine("No concurrency exception.");

}

catch (OptimisticConcurrencyException)

{

try

{

context.Refresh(RefreshMode.ClientWins, d);

context.SaveChanges();

}

catch (OptimisticConcurrencyException)

{

//在大量用户时,处理的瞬间,别人又更新了,此时可以继续处理

}

}

//清理数据库

d = context.DemoSet.First();

context.DeleteObject(d);

context.SaveChanges();

}
相关文章
|
4天前
|
设计模式 SQL 开发框架
Entity Framework 数据访问浅谈
在现代软件开发中,数据库操作至关重要。Entity Framework (EF) 作为 .NET 平台上的优秀 ORM 框架,简化了数据库交互。本文介绍 EF 的基本用法,包括安装、配置 `DbContext`、CRUD 操作等,并探讨常见问题及其解决方案,如性能优化、错误处理及设计模式的应用,帮助开发者更高效地使用 EF。
11 6
|
2月前
|
存储 缓存 数据库连接
Entity Framework Core 跨数据库查询超厉害!多数据库连接最佳实践,让你的开发更高效!
【8月更文挑战第31天】在现代软件开发中,跨数据库查询是常见需求。Entity Framework Core(EF Core)作为强大的ORM框架,支持多种方法实现这一功能。本文介绍了在EF Core中进行跨数据库查询的最佳实践,包括:理解数据库上下文、使用多个上下文进行查询、处理数据库连接与事务,以及性能优化策略。通过创建独立的数据库上下文如`UserContext`和`OrderContext`,并在业务逻辑中同时使用它们,可以轻松实现跨库查询。此外,利用`TransactionScope`可确保事务一致性,从而提高系统的可靠性和效率。
81 0
|
2月前
|
存储 开发框架 .NET
提升数据处理效率:深入探索Entity Framework Core中的LINQ查询技巧与最佳实践
【8月更文挑战第31天】在现代 .NET 应用开发中,Entity Framework Core (EF Core) 是访问数据库的首选技术。本文通过在线商店案例,探讨 EF Core 中 LINQ 查询的最佳实践:使用 `Include` 加载相关数据,避免过早调用 `ToList()`,利用 `Select` 进行投影以优化性能,采用异步查询提升响应性,并考虑使用存储过程处理复杂查询。这些技巧有助于构建高效、可维护的数据访问层。
39 0
|
2月前
|
SQL 数据处理 数据库
提升数据处理效率:深入探讨Entity Framework Core中的批量插入与更新操作及其优缺点
【8月更文挑战第31天】在软件开发中,批量插入和更新数据是常见需求。Entity Framework Core 提供了批处理功能,如 `AddRange` 和原生 SQL 更新,以提高效率。本文通过对比这两种方法,详细探讨它们的优缺点及适用场景。
58 0
|
2月前
|
存储 SQL 测试技术
Entity Framework Core 中的存储过程超厉害!从定义到调用全攻略,提升性能与安全性!
【8月更文挑战第31天】在现代软件开发中,数据库操作效率至关重要。Entity Framework Core(EF Core)作为强大的对象关系映射(ORM)框架,支持存储过程,可提升数据库操作的性能、安全性和可维护性。本文详细介绍如何在 EF Core 中定义、配置及调用存储过程,并提供最佳实践建议,包括性能优化、安全性增强、代码可维护性提升以及参数化查询等。通过遵循这些指导原则,开发者能够充分利用存储过程的优势,显著提高应用程序质量和性能。附带完整示例代码,展示从定义实体类到调用存储过程的全过程。
97 0
|
2月前
|
API 数据库 开发者
掌握数据完整性的关键:全面解析Entity Framework Core中的事务管理策略及其应用
【8月更文挑战第31天】在数据库操作中,确保数据完整性至关重要。Entity Framework Core(EF Core)作为一款强大的ORM工具,提供了丰富的API支持事务管理,帮助开发者实现数据的一致性和完整性。
31 0
|
4月前
|
SQL 关系型数据库 数据库连接
详解 Entity Framework(EF)核心组件与数据访问方法探索
Entity Framework是一个ORM框架,简化.NET开发者与数据库的交互。它始于.NET Framework的一部分,但现在可通过NuGet独立获取。ORM允许对象模型直接映射到数据库结构,避免直接编写SQL。
283 2
详解 Entity Framework(EF)核心组件与数据访问方法探索
|
4月前
|
存储 API 数据库
【Entity Framework】创建并配置模型
【Entity Framework】创建并配置模型
20 0
|
4月前
|
存储 开发框架 安全
【Entity Framework】闲话EF中批量配置
【Entity Framework】闲话EF中批量配置
26 0
|
数据库连接 数据库 C++
entity framework core在独立类库下执行迁移操作
entity framework core在独立类库下执行迁移操作
103 0