Microsoftは、fluent APIの補助によるinsert、update、deleteストアドプロシージャー、接続回復性、iceclowからのプルリクエスト、UnaiZorrillaとあなた自身がトランザクションを管理できる新しいDbContext APIシナリオをサポートするEntity Framework 6 Alpha 3を発表した。
Microsoftによると、3つのストアドプロシージャは、 <type_name>_Insert、<type_name>_Update、<type_name>_Deleteのようなフォーマットで作成されるべきである。さらにパラメータ名に対応したと、insertとupdateストアドプロシージャーは、識別子や計算とマークされたものを除き、すべてのプロパティをパラメータとして持つべきであり、deleteストアドプロシージャーは、エンティティのキー値のパラメータを持つべきである。
以下のコードスニペットを見てみよう。
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
}
上記のコードに対応したinsertストアドプロシージャが以下のように表示される。
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
updateとdeleteのプロシージャーは以下のように表示される。
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には、一時的な接続障害からの自動復旧を可能にするa href="http://entityframework.codeplex.com/wikipage?title=Connection%20Resiliency%20Spec">接続回復性が含まれている。これは、IRetriableExceptionDetectorとIRetryDelayStrategyインターフェイスを使ったIExecutionStrategyインターフェイスが実装されている。
公式な情報によると、Entity FrameworkはNonRetryingExecutionStrategy、DefaultSqlExecutionStrategy、ExecutionStrategy、SqlAzureExecutionStrategyといった4つのストラテジ実行とともにリリースされる。
Entity Framework 6 Alpha 3は、カスタム移行操作とカスタム移行SQLジェネレータでそれらの操作をすることができるiceclowからのプルリクエストを提供する。 MicrosoftでADO.NET Entity FrameworkのProgram ManagerであるRowan Miller氏は、関連するコードとiceclowの実装を検討してきた。
Alpha 3はまた、DbContext.Database.UseTransactionとDbContext.Database.BeginTransaction APIsの補助による自身のトランザクションの管理を含むプラグ可能な複数形と単数形サービスを提供するUnaiZorrillaからのプルリクエストも可能にする。