C #, .Net raw SQL Server запрос возвращает числовые значения, но нулевые строки - PullRequest
0 голосов
/ 09 мая 2018

Я использую VS2017, C #, EF 6.2.0. У меня есть запрос (показан ниже), который попадает в две разные базы данных. В одной базе данных хранится информация о сотрудниках, а в другой - данные об использовании пространства, которые читаются как: к каким офисам, лабораториям и т. Д. Имеет доступ Person-X?

Я могу запустить необработанный запрос в SSMS, заменив @PERSONID на реальный personId, и он работает. Когда я запускаю запрос с помощью метода ниже, он возвращает результат, но строка GroupName всегда равна нулю.

Должен ли я сделать что-то особенное для строк?

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);
    }
}

1 Ответ

0 голосов
/ 09 мая 2018

Имя столбца (в настоящее время Name), вероятно, должно совпадать с именем члена (GroupName); попробовать:

sGroup.Name as [GroupName]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...