Linq中“选择系统用户”的等价物是什么

Linq中“选择系统用户”的等价物是什么,linq,c#,sql-server,tsql,linq-to-sql,Linq,C#,Sql Server,Tsql,Linq To Sql,我可以通过使用SYSTEM_user值获取当前登录的SQL Server用户的身份,但是是否有办法通过某种方式实现这一点?我正在寻找类似以下内容的内容: var query=来自dataContext.Users中的u 其中u.domainname==dataContext.system\u用户 选择u.fullname; 在非域用户通过VPN进行身份验证的情况下,使用类似Environment.UserName的内容将不起作用,通过一个单独的语句进行查询是不可取的,因为我只想使用一个语句来获取

我可以通过使用SYSTEM_user值获取当前登录的SQL Server用户的身份,但是是否有办法通过某种方式实现这一点?我正在寻找类似以下内容的内容:

var query=来自dataContext.Users中的u 其中u.domainname==dataContext.system\u用户 选择u.fullname;
在非域用户通过VPN进行身份验证的情况下,使用类似Environment.UserName的内容将不起作用,通过一个单独的语句进行查询是不可取的,因为我只想使用一个语句来获取数据。

LINQ本身对数据库一无所知,所以不知道。如果您谈论的是LINQ 2实体,正如代码示例中的一些关键字所暗示的那样,您可能能够将其中一个重载或其相关项与显式SQL一起使用声明

或者,您可以解析连接字符串以获取用户的登录详细信息。我相信如果您不使用Windows auth,该类应该能够告诉您用于连接数据库的用户的用户名和密码

试试这个:

    class System
    {
        public string SystemUser { get; set; }
    }

   var query = dataContext.ExecuteQuery<System>("select SYSTEM_USER AS 'SystemUser'");

调用系统函数可以通过在数据库中创建新函数来完成,这些函数可以在ORM中进一步映射。这取决于ORM映射用户数据库功能的能力

CREATE FUNCTION dbo.fnSystemUser () returns varchar(120)
AS
BEGIN
    return (select SYSTEM_USER)
END
LINQ2SQL和EF将为以下LINQ查询创建一条SQL语句

var query = from u in dataContext.Users
            where u.domainname == dataContext.fnSystemUser()
            select u.fullname;

这并没有给我Linq语法,但我确实得到了强类型作为回报,这可能是我最终最想要的,所以感谢您提供这段代码。@ionden:我会在第二天左右检查一下,看看是否还有其他关于这个主题的有用见解,但只要这是之后的最佳答案,完美:这正是我想要的:早期绑定和强类型返回,都在一条语句中。甚至没有想到SQL函数的潜力!