BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

Entity Framework 6 Alpha 3は、コードファーストストアドプロシージャと接続回復性を持つ

| 作者: Anand Narayanaswamy フォローする 0 人のフォロワー , 翻訳者 尾崎 義尚 フォローする 0 人のフォロワー 投稿日 2013年3月12日. 推定読書時間: 3 分 |

原文(投稿日:2013/03/01)へのリンク

 

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からのプルリクエストも可能にする。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

C# 8の非同期ストリーム

Bassam Alugili 2018年10月11日 午前3時13分

BT