2

Breeze を使用して Task エンティティを作成するとします (私は EF を使用しています) が、これは実際のタスク アプリケーションであるため、タスクは現在ログインしているユーザーに関連付ける必要があります。タスクには、保存中に入力する必要がある UserId 外部キーがあり、それが行き詰まっています。ほとんどがクライアント側のアプリケーションでこれを行うことは、私にとってはなじみのない概念です。賢いユーザーが別のユーザーのためにタスクを作成することを望まないため、クライアント側で UserId 外部キーをうまく指定できません。現在ログインしているユーザー (この場合は System.Web.HttpContext.Current.User.Identity.Name) を UserId FK に入力するために、保存プロセスにフックする方法はどこにありますか。

別の投稿やドキュメントの方向性を教えてください。先ほど言ったように、これは私にとって新しい概念なので、何を検索すればよいかわかりません。

そして、この質問に答える人に、私は心からあなたを愛しています。:)

4

1 に答える 1

5

カスタム EFContextProvider の Save Interceptorに関する Breeze Web サイトのドキュメントを参照してください。独自のプロバイダーを作成し、BeforeSaveEntity メソッドを実装する必要があります。そのメソッドでは、MVC4 で行ったのと同じように、タスクの UserId を現在のユーザーに設定できます。

public class TasksContextProvider: EFContextProvider<YourExistingDbContext>  
{

  public override bool BeforeSaveEntity(EntityInfo entityInfo) 
  {
    if (entityInfo.Entity.GetType() == typeof(YourTask)
        && entityInfo.EntityState == EntityState.Added) 
    {
      // add your logic here to set the user and/or do validation
    }
  }

}
于 2013-01-23T00:32:49.587 に答える