2

我需要存储应用程序用户名(不是SYSTEM_USER)以及我从前端应用程序(C#)插入的每条记录。谁能建议一个很好的方法将应用程序用户名绑定为默认列值,而不是将其作为参数传递给 SP?

4

1 回答 1

0

您可以引用一个在您的类构造函数中返回感兴趣的用户的函数,并在执行过程的方法中调用它 - 例如:

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 回答