C# C、 .Net原始SQL Server查询返回数值,但返回空字符串
我使用的是VS2017,C,EF 6.2.0。我有一个如下所示的查询,可以访问两个不同的数据库。一个数据库保存员工信息,另一个数据库保存空间使用数据,读作:Person-X可以访问哪些办公室、实验室等 我可以在SSMS中运行原始查询,将@PERSONID替换为真实的PERSONID,并且可以正常工作。当我通过下面的方法运行查询时,它会返回一个结果,但字符串GroupName始终为null 我必须为弦做些特殊的事情吗C# C、 .Net原始SQL Server查询返回数值,但返回空字符串,c#,.net,entity-framework,C#,.net,Entity Framework,我使用的是VS2017,C,EF 6.2.0。我有一个如下所示的查询,可以访问两个不同的数据库。一个数据库保存员工信息,另一个数据库保存空间使用数据,读作:Person-X可以访问哪些办公室、实验室等 我可以在SSMS中运行原始查询,将@PERSONID替换为真实的PERSONID,并且可以正常工作。当我通过下面的方法运行查询时,它会返回一个结果,但字符串GroupName始终为null 我必须为弦做些特殊的事情吗 public class PersonToMemberInfo { p
public class PersonToMemberInfo
{
public long GroupId { get; set; }
public long PersonnelGroupId { get; set; }
public string GroupName { get; set; }
}
public List<PersonToMemberInfo> GetPersonMemberships(PersonnelContext pdb, long personId) {
try {
var personIdParam = new SqlParameter {
Value = personId,
DbType = DbType.Int64,
ParameterName = "PERSONID"
};
var myList = pdb.Database.SqlQuery<PersonToMemberInfo>(@"
SELECT DISTINCT
sGroup.GroupId,
sGroup.PersonnelGroupId,
sGroup.Name
FROM
Company.Personnel.Memberships AS Memberships
INNER JOIN
Space.dbo.Person AS Person ON Memberships.PersonId = Person.PersonnelPersonId
AND Person.PersonnelPersonId = @PERSONID
AND GETDATE() BETWEEN Person.StartDate AND isnull(Person.EndDate, GETDATE())
INNER JOIN
Space.dbo.[Group] AS sGroup ON Memberships.GroupId = sGroup.PersonnelGroupId
INNER JOIN
Space.dbo.GroupList AS GroupList ON sGroup.GroupId = GroupList.GroupId
AND GETDATE() BETWEEN GroupList.StartDate AND ISNULL(GroupList.EndDate, GETDATE())--
WHERE
GETDATE() BETWEEN Memberships.StartDate AND ISNULL(Memberships.EndDate, GETDATE());",
personIdParam).ToList();
return myList;
} catch (Exception e) {
throw new Exception("GetPersonMemberships: " + e.Message);
}
}
列名当前名称可能需要与成员名GroupName匹配;尝试:
sGroup.Name as [GroupName]