0

我正在使用 Odata 控制器。关于我希望 siteUsers 和 siteUser.Login 序列化的响应。目前只有最顶层的 siteUsers 正在序列化。做这个的最好方式是什么?

命名空间 SOW.Controllers {

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

}

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

1 回答 1

0

未显示登录的原因是因为它的实体类型与 SiteUser 不同,因此在 SiteUser 类中具有登录类型属性将使其成为 SiteUser 实体的导航属性。

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

[EnableQuery]
public IQueryable<SiteUser> Get()
{
    return db.SiteUsers;
}

并将此类请求发送到服务

GET http://host/service/odata/SiteUsers?$expand=Login
于 2014-09-09T09:41:11.567 回答