NHibernate的与列表返回JSON

问题描述 投票:1回答:1

我有我的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": "[email protected]"
        }
    }, {
        "PartnerId": 1,
        "PartnerName": "ExpressPay",
        "PartnerUsers": {
            "PartnerUserId": "0",
            "LoginId": "[email protected]"
        }
    }],
    "ResponseCode": "0",
    "ResponseMessage": "Successful"
}

但我希望能够生产这种JSON来代替:

{
    "Data": "",
    "data": [{
        "PartnerId ": 1,
        "PartnerName": "ExpressPay ",
        "PartnerUsers": [{
            "partnerUserId": "0",
            "loginId": "[email protected]"
        }, {
            "partnerUserId": "0",
            "loginId": "[email protected]"
        }]
    }],
    "ResponseCode": "0",
    "ResponseMessage": "Successful"
}

我尝试使用清单以这种代码

PartnerUsers = new List<PartnerUsersss>

,改变它的类。但是,我得到了一个错误

列表中不包含登录ID的定义

在新的类:

public List<PartnerUsersss> PartnerUsers { get; set; }
c# json nhibernate
1个回答
0
投票

您需要删除您查询加入和修改您的查询像下面,

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; }
© www.soinside.com 2019 - 2024. All rights reserved.