2

フロントエンド アプリケーション (C#) から挿入するすべてのレコードと共に、アプリケーションのユーザー名 ( SYSTEM_USER ではない) を保存する必要がありますアプリケーションのユーザー名をパラメーターとして SP に渡すのではなく、デフォルトの列値としてバインドするための優れた方法を誰かが提案できますか?

4

1 に答える 1

0

クラスコンストラクターで対象のユーザーを返す関数への参照を取得し、proc を実行するメソッド内でそれを呼び出すことができます-例:

public class SomeContext
{
  private readonly Func<string> getUserName;
  public SomeContext(Func<string> getUserName)
  (
    this.getUserName = getUserName;
  )

  public void SaveSomething(\* parameters here *\)
  {
    // build your proc based on someThing plus 'this.getUserName();'
    var cmd = "Exec whatever";
    ExecuteSqlCommand(cmd);
  }
}

SomeContext依存性注入フレームワークを使用して接続しgetUserName、関心のあるユーザー名を返す関数にパラメーターをバインドできます (() => HttpContext.Current.User.Identity.Nameたとえば、ASP.Net MVC で)。

次に、実行時に を呼び出すSaveSomethingと、ユーザー名が proc の引数として SQL に送信されます。

于 2013-07-11T02:18:46.647 に答える