首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODATAController多级序列化

ODATAController多级序列化
EN

Stack Overflow用户
提问于 2014-09-09 11:55:59
回答 1查看 188关注 0票数 0

我使用的是Odata控制器。在响应中,我希望siteUsers和siteUser.Login序列化。目前,只有顶级的siteUsers是序列化的。做这件事最好的方法是什么?

命名空间SOW.Controllers {

代码语言:javascript
复制
public class SiteUsersController : ODataController
{


    // POST: odata/SiteUsers
    public IHttpActionResult Post(SiteUser siteUser)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.SiteUsers.Add(siteUser);
        db.SaveChanges();

        return Created(siteUser);
    }

}

代码语言:javascript
复制
public partial class SiteUser
{
    public int SiteUsersId { get; set; }
    public int SiteId { get; set; }
    public int LoginId { get; set; }
    public string CreatedBy { get; set; }
    public Nullable<System.DateTime> CreateDate { get; set; }
    public string UpdatedBy { get; set; }
    public Nullable<System.DateTime> UpdatedDate { get; set; }

    public virtual Login Login { get; set; }
    public virtual Site Site { get; set; }
}




 public partial class Login
    {
        public Login()
        {
            this.SiteUsers = new HashSet<SiteUser>();
            this.SOWTransactions = new HashSet<SOWTransaction>();
        }

        public int LoginId { get; set; }
        public string UserName { get; set; }
        public string DisplayName { get; set; }
        public string eMail { get; set; }
        public Nullable<bool> active { get; set; }
        public Nullable<System.DateTime> LastLogon { get; set; }

        public virtual ICollection<SiteUser> SiteUsers { get; set; }
        public virtual ICollection<SOWTransaction> SOWTransactions { get; set; }
    }
EN

回答 1

Stack Overflow用户

发布于 2014-09-09 17:41:12

Login没有显示的原因是因为它的实体类型不同于SiteUser,因此在SiteUser类中拥有Login type属性将使其成为SiteUser实体的导航属性。

为了让服务在请求SiteUsers的响应中返回Login,您需要确保在SiteUsersController中的Get操作上具有[EnableQuery]属性

代码语言:javascript
复制
[EnableQuery]
public IQueryable<SiteUser> Get()
{
    return db.SiteUsers;
}

并将这样的请求发送到服务

代码语言:javascript
复制
GET http://host/service/odata/SiteUsers?$expand=Login
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25736458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档