写点什么

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

  • 2013-03-04
  • 本文字数:1181 字

    阅读完需:约 4 分钟

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] <br></br> @BlogId int,
 @Name varchar(max),
 @Url varchar(max)
AS
 UPDATE [dbo].[Blogs]   SET [Name] = @Name, [Url] = @Url
WHERE BlogId = @BlogId;<br></br>
CREATE PROCEDURE [dbo].[Blog_Delete]
@BlogId int
AS
DELETE FROM [dbo].[Blogs]
WHERE BlogId = @BlogId
{1}

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

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

2013-03-04 01:092618
用户头像

发布了 428 篇内容, 共 166.2 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

数仓缓慢变化维深层讲解

大数据老哥

大数据 数据仓库 数仓

数字化浪潮下 哪些银行业务或“生变”

CECBC

金融科技

ChaosBlade 在工商银行混沌工程体系中的应用实践

阿里巴巴云原生

云计算 高可用 开发者 云原生 实践

影像恋上智能:麒麟9000中的高甜CP创新

脑极体

稻盛和夫《干法》| 教你做快乐的打工人

小匚

读书笔记 程序员 个人成长

Android开发经验谈:2021最新Android常用开源库总结,成功收获美团,小米安卓offer

欢喜学安卓

android 程序员 面试 移动开发

2021 第一份唠嗑

大头虾

如何通过 Serverless 轻松识别验证码?

阿里巴巴云原生

人工智能 阿里云 Serverless 云原生 数据采集

【薪火计划】07 - 与领导沟通的方法

dstweihao

管理

区块链商城系统开发技术详解

程序员如何解决中年危机?资深Android开发带你入门Framework,醍醐灌顶!

欢喜学安卓

android 程序员 面试 移动开发

面试官:不会真有人不知道什么是线程池吧?

Java鱼仔

Java 线程池 并发

《数据挖掘:实用的机器学习工具和技术,第4版》PDF版免费下载

计算机与AI

数据挖掘 机器学习 数据科学

甲方日常 79

句子

工作 随笔杂谈 日常

RocketMQ消息模型

废材姑娘

Java RocketMQ

使用 iTerm2 打造美观高效的 Mac 终端

郭旭东

Mac 终端 iterm2

大数据分析决策平台建设方案,警务情报研判系统搭建

t13823115967

Pulsar 2.7.0 新增特性概览:事务支持、Topic 级别策略配置等

Apache Pulsar

大数据 开源 pulsar Apache Pulsar 消息中间件

“区块链+有机蔬菜”农产品溯源项目落地

CECBC

农业发展 农业

涨知识!一个三非渣本的Android校招秋招之路,赶紧收藏!

欢喜学安卓

android 程序员 面试 移动开发

大作业1

蓝黑

数字银行成长性和盈利能力可期

CECBC

数字化转型

阿里巴巴云原生的 2020,注定不凡的一年

阿里巴巴云原生

阿里云 容器 开发者 云原生 年终总结

Spring 源码学习 13:initMessageSource

程序员小航

spring 源码 源码解析

区块链挖矿系统开发功能方案

mysql binlog轻量同步工具binlog portal

dothetrick

Java MySQL springboot Binlog spring Boot Starter

移动设备管理平台的搭建(基于STF/ATXServer2)

行者AI

人工智能

平安社区平台解决方案,智慧社区综合服务平台搭建

t13823115967

智慧社区管理平台开发

Arthas 定位 Dubbo 手动注册 Eureka 异常

阿里巴巴云原生

阿里云 云原生 dubbo 工具 征文大赛

SourceTree 如何连接 GitLab

TroyLiu

git gitlab SSH sourcetree

Ubuntu 使用 Iptables 做网络转发

wong

iptables Ubuntu20.04

Entity Framework 6 Alpha 3为Code First提供对存储过程支持,并提供连接恢复功能_语言 & 开发_Anand Narayanaswamy_InfoQ精选文章