Nhibernate вернет Json со списком - PullRequest
0 голосов
/ 01 февраля 2019

У меня проблема с моим кодом C #.Я не могу произвести мой JSON хорошо.

Я использую NHIBERNATE для подключения и выбора данных на моем SQL Server.Я хочу создать JSON с объектом списка внутри.Нужна ваша помощь, ребята.

Код NHibernate:

 var query = (from partners in session.Query<Partners>()
             join partnerUsers in session.Query<PartnerUsers>() on partners.PartnerId equals partnerUsers.PartnerId
             where partners.PartnerId == partnerId
             select new Partnersss
             {
                 PartnerId = partners.PartnerId,
                 PartnerName = partners.Name,
                 PartnerUsers = new PartnerUsersss()
                 {
                     LoginId = partnerUsers.LoginId
                 }
             }).ToList<object>();
return query;

Класс:

public class PartnerUsersss
{
    public int PartnerUserId { get; set; }
    public string LoginId { get; set; }
}

public class Partnersss
{
    public int PartnerId { get; set; }
    public string PartnerName { get; set; }
    public PartnerUsersss PartnerUsers { get; set; }
}

Результат JSON:

{
    "Data": "",
    "data": [{
        "PartnerId": 1,
        "PartnerName": "ExpressPay",
        "PartnerUsers": {
            "PartnerUserId": "0",
            "LoginId": "a@a.com"
        }
    }, {
        "PartnerId": 1,
        "PartnerName": "ExpressPay",
        "PartnerUsers": {
            "PartnerUserId": "0",
            "LoginId": "b@b.com"
        }
    }],
    "ResponseCode": "0",
    "ResponseMessage": "Successful"
}

Но я хочувместо этого можно создать этот JSON:

{
    "Data": "",
    "data": [{
        "PartnerId ": 1,
        "PartnerName": "ExpressPay ",
        "PartnerUsers": [{
            "partnerUserId": "0",
            "loginId": "a@a.com"
        }, {
            "partnerUserId": "0",
            "loginId": "b@b.com"
        }]
    }],
    "ResponseCode": "0",
    "ResponseMessage": "Successful"
}

Я попытался использовать List с таким кодом

PartnerUsers = new List<PartnerUsersss>

, а также изменить класс.Но я получил ошибку

Список не содержит определения для LoginId

В новом классе:

public List<PartnerUsersss> PartnerUsers { get; set; }

1 Ответ

0 голосов
/ 01 февраля 2019

Вам необходимо удалить соединение из вашего запроса и изменить его, как показано ниже,

var query = (from partners in session.Query<Partners>()
                     where partners.PartnerId == partnerId
                     let partnerUsers = (from pu in session.Query<PartnerUsers>()
                                         where pu.PartnerId == partners.PartnerId
                                         select pu).ToList()
                     select new Partnersss
                     {
                         PartnerId = partners.PartnerId,
                         PartnerName = partners.Name,
                         PartnerUsers = partnerUsers
                     }).ToList();

Вам необходимо изменить тип свойства PartnerUsers на Список,

public List<PartnerUsersss> PartnerUsers { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...