我们编写的每个存储过程都必须将 clientip、serverip、windows 用户名等传递给它。
问题是我如何有效地将这些传递给 DAL?
我假设这是 ASP.NET 中的 Web 应用程序。如果是这种情况,您可以通过以下静态实例在 Web 应用程序之外的 Web 请求上下文中访问所有这些内容:
System.Web.HttpContext.Current
如果您需要的一切都是您通常在页面级别默认可用的请求、响应和用户对象中拥有的标准东西,那么这应该就是您所需要的。如果您需要为您的网络应用程序定制的信息,那么 Ben 的答案(上图)应该可以工作。
您应该可以在 System.Environment 类或您自己的某种线程主体中访问所有上述数据。您的 DAL 可以轻松地从这两个或任何一个来源中获取信息。
创建一个类来保存这些数据,一个工厂来构建它和辅助方法来使用它。
IUserContext
{
int param1 {get;set;}
int param2 {get;set;}
SqlParameter[] GetSqlParameters();
}
UserContext : IUserContext{}
UserContextFactory
{
internal IUserContext IUserContextFromRequest(){}
}
祝你好运