BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Entity Framework 6 Alpha 3为Code First提供对存储过程支持,并提供连接恢复功能

| 作者 Anand Narayanaswamy 关注 0 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2013年3月5日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Microsoft宣布Entity Framework 6 Alpha 3已经可以下载了,它现在支持通过Fluent API将Code First映射到对应的新增、修改和删除功能的存储过程;添加了连接恢复功能;包含了来自iceclow和UnaiZorrilla的pull request内容;并添加了新的DbContext的API,以允许你管理自己的事务。

根据Microsoft所说,这三种存储过程在创建时需要遵循类似于<type_name>Insert,<type_name>Update及<type_name>_Delete这样的格式。另外,方法的参数名称需要和属性名称相对应,新增和修改的存储过程需要为每个属性创建一个对应的参数,除了那些标记为ID(Identity)及计算所得的属性。而删除的存储过程则需要为实体(entity)的主键值创建一个对应的参数。
让我们看一看以下代码片段:

public class Blog 
{ 
 public int BlogId { get; set; } 
 public string Name { get; set; } 
 public string Url { get; set; } 
}

对应以上代码的新增存储过程看起来应该是以下这样:

CREATE PROCEDURE [dbo].[Blog_Insert] 
 @Name varchar(max), 
 @Url varchar(max) 
AS 
 INSERT INTO [dbo].[Blogs] ([Name], [Url])
 VALUES (@Name, @Url)
 SELECT SCOPE_IDENTITY() AS BlogId    

修改和删除的存储存储过程则按照如下方式编写:

CREATE PROCEDURE [dbo].[Blog_Update] 
@BlogId int,  @Name varchar(max),  @Url varchar(max) AS  UPDATE [dbo].[Blogs]   SET [Name] = @Name, [Url] = @Url WHERE BlogId = @BlogId;
CREATE PROCEDURE [dbo].[Blog_Delete] @BlogId int AS DELETE FROM [dbo].[Blogs] WHERE BlogId = @BlogId

官方文档详细地介绍了所有可能的场景细节。

Entity Framework 6 Alpha 3加入了连接恢复功能,能够从短暂的连接失败中自动恢复。它的实现使用了IExecutionStrategy接口,而在其中的具体实现又使用到了IRetriableExecutionDector及IRetryDelayStrategy接口。

根据官方信息来源,Entity Framework将包含4个执行策略(Execution Strategy),分别为NonRetryingExecutionStrategy,DefaultSqlExecutionStrategy,ExecutionStrategy和SqlAzureExecutionStrategy。

Entity Framework Alpha 3提供了一项功能,它是来自iceclow提交的一个pull request,允许你创建定制化的数据迁移操作,并在一个定制化迁移SQL脚本生成器中处理这些操作。Microsoft ADO.NET Entity Framework的项目经理Rowan Miller已经通过相关的代码示例介绍了iceclow的实现方式。

Alpha 3也允许你使用来自UnaiZorrilla所提交的pull request,它提供了一个可插式的复数化与单数化的服务。另一项所包含的功能是允许你通过使用DbContext.Database.UseTransaction及DbContext.Database.BeginTransaction API管理你自己的事务。

查看英文原文:Entity Framework 6 Alpha 3 with Code First Stored Procedures and Connection Resiliency

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT