我可以使用SYSTEM_USER值获取当前登录的SQL Server用户的身份,但是有某种方法可以通过linq做到这一点吗?我正在寻找类似以下的内容:
var query = from u in dataContext.Users
where u.domainname == dataContext.system_user
select u.fullname;
如果非域用户通过VPN进行身份验证,则无法使用Environment.UserName之类的功能,并且不希望通过单独的语句进行查询,因为我只想使用一条语句来获取数据.
解决方法:
可以通过在数据库中创建可以在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;