我需要存储应用程序用户名( NOT SYSTEM_USER )以及我从前端应用程序(C#)插入的每条记录。 任何人都可以提出一个很好的方法来将应用程序用户名绑定为默认列值,而不是将其作为参数传递给SP吗?
答案 0 :(得分: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
参数绑定到一个函数,该函数返回您感兴趣的用户名(ASP.Net MVC中的() => HttpContext.Current.User.Identity.Name
,例如)。
然后在运行时,当您调用SaveSomething
时,用户名将作为proc的参数发送到SQL。