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
评论