私たちが書き込むストアドプロシージャには、clientip、serverip、windows usernameなどが渡されなければなりません。データアクセス層に環境変数を渡す
DALにこれらを効率的に渡すにはどうしたらいいですか?
私たちが書き込むストアドプロシージャには、clientip、serverip、windows usernameなどが渡されなければなりません。データアクセス層に環境変数を渡す
DALにこれらを効率的に渡すにはどうしたらいいですか?
上記のすべてのデータは、System.Environmentクラスまたは独自のスレッドプリンシパルでアクセス可能にする必要があります。あなたのDALは、それらのソースの両方またはどちらかから簡単に取り込むことができます。
このデータを保持するクラス、それを構築するファクトリ、およびそれを消費するヘルパーメソッドを作成します。
IUserContext
{
int param1 {get;set;}
int param2 {get;set;}
SqlParameter[] GetSqlParameters();
}
UserContext : IUserContext{}
UserContextFactory
{
internal IUserContext IUserContextFromRequest(){}
}
幸運
私は、これはASP.NETでのWebアプリケーションであると仮定しています。あなたが必要とするすべてはあなたが普通に持っている標準のものである場合
System.Web.HttpContext.Current
:そのような場合は、次の静的インスタンスを介してWebアプリケーションの外のWeb要求のコンテキストでこれらすべてのものへのアクセス権を持っていますリクエスト、レスポンス、およびユーザーオブジェクトは、デフォルトでページレベルで使用できます。次にこれが必要なものです。あなたのWebアプリケーションに特有の情報が必要な場合は、Benの答え(上記)が有効になります。
私が提案したのと同様です。基本的には、Benのクラスを推薦し、それをIPrincipalに実装します。それで、あなたはそれをスレッドに格納することができ、更新について心配する必要はありません。 – GWLlosa
スレッドに保存することはどういう意味ですか? – sarsnake
私はこのアプリで1つのスレッド(マルチスレッドのないWebアプリケーション)しか持っていません。上記の方法を使用すると(これは私が好きです)、これは永続的なbtwnポストバックですか? – sarsnake