Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 插入应用程序用户名_C#_Sql Server - Fatal编程技术网

C# 插入应用程序用户名

C# 插入应用程序用户名,c#,sql-server,C#,Sql Server,我需要存储应用程序用户名(NOT系统用户)以及我从前端应用程序(C)插入的每条记录。 有人能推荐一个不错的方法将应用程序用户名绑定为默认列值,而不是将其作为参数传递给SP吗?您可以引用一个函数,该函数在类构造函数中返回感兴趣的用户,并在执行过程的方法中调用该函数-例如: public class SomeContext { private readonly Func<string> getUserName; public SomeContext(Func<string&

我需要存储应用程序用户名(NOT系统用户)以及我从前端应用程序(C)插入的每条记录。
有人能推荐一个不错的方法将应用程序用户名绑定为默认列值,而不是将其作为参数传递给SP吗?

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

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);
  }
}
公共类上下文
{
私有只读Func getUserName;
public SomeContext(Func getUserName)
(
this.getUserName=getUserName;
)
public void SaveSomething(\*此处参数*\)
{
//基于加上“this.getUserName();”的内容构建程序
var cmd=“Exec whatever”;
ExecuteSqlCommand(cmd);
}
}
您可以使用依赖注入框架连接
SomeContext
,并将
getUserName
参数绑定到一个函数,该函数返回您感兴趣的用户名(
()=>HttpContext.Current.user.Identity.name
,例如,在ASP.Net MVC中)


然后,在运行时,当您调用
SaveSomething
时,用户名将作为参数发送到SQL。

您的应用程序可以在每次查询之前将用户名设置到
上下文信息中,您可以使用一个默认表达式从中读取它。它是什么类型的应用程序,您使用的是什么数据访问层?@MartinSmith+1,nice ONE这是我们内部的C#应用程序,我正计划将用户名与连接字符串一起附加。@Appyks-如果应用程序是单用户,您可以将其与
APP#name()一起发送
这将更容易,因为它不需要单独的
设置上下文\u INFO
调用。如果是多用户,我认为这将对连接池产生影响。@MartinSmith-谢谢Martin,这将对我有很大帮助,如果问题太模糊,以至于“很难提出任何有意义的建议”(你的话),也许最好不要基于一个未被指明为适用的框架提出具体建议?(好吧,你的问题是关于的,所以这里有一个基于公平的答案,我使用了EF/MVC作为我的示例的一部分,但这妨碍了答案的实质-注入
Func
在运行时获取用户名。相应地编辑。无法理解其中的不清楚之处!!!看看评论(建议)我和马丁史密斯先生对他给出的解决方案感到满意。。