Azure应用(移动)服务不返回类的类类型属性

时间:2016-10-23 08:55:59

标签: entity-framework xamarin odata azure-web-sites azure-mobile-services

我的Azure应用(移动)服务存在问题(如果可以将其称为问题)。我有以下EntityData对象:

public class Role : EntityData
    {
        public string RoleCode { get; set; }

        public string RoleName { get; set; }

        public List<User> Users { get; set; }

        public new string Id { get; set; }

        public new DateTimeOffset? CreatedAt { get; set; }

        public new DateTimeOffset? UpdatedAt { get; set; }

        public new byte[] Version { get; set; }
    }

...以及“包含”之前的类(角色用户中的外键):

public class User : EntityData
{
    public string Name { get; set; }

    public string Surname { get; set; }

    public string Username { get; set; }

    public string Password { get; set; }

    //foreign key to Role
    public Role Role { get; set; }

    public List<Appointment> appointments { get; set; }

    public new string Id { get; set; }

    public new DateTimeOffset? CreatedAt { get; set; }

    public new DateTimeOffset? UpdatedAt { get; set; }

    public new byte[] Version { get; set; }
}

MSSQL DB中的表创建得很好:

Role table

User table

但是当我尝试使用表格控制器返回所有用户时:

    public IQueryable<User> GetAllUser()
    {
        return Query();
    }

...它返回给我所有用户,但没有该用户的角色

{
    "deleted": false,
    "version": "AAAAAAABQJY=",
    "updatedAt": "2016-09-24T14:51:06.126Z",
    "createdAt": "2016-10-11T19:43:12.165Z",
    "id": "8d5a1403-e0a1-4a69-b32d-708b3a84b260",
    "password": "passwordUsera",
    "username": "korisnik",
    "surname": "Rafailovic",
    "name": "Marija"
  }

所有其他属性都存在,但不是角色!我尝试使用Include with Query但这没有用......

为什么会发生这种情况?我如何才能在每个用户中包含角色?我是通过使用自定义控制器和存储过程完成的,但这不是很好的解决方案......

2 个答案:

答案 0 :(得分:0)

我建议查看我的书http://aka.ms/zumobook中的数据章节 - 这里有关于关系以及你能做什么(和不能做什么)的具体信息。 Spoiler:当你把它推进离线世界时,它的运作方式并不像你想象的那样。

答案 1 :(得分:0)

Azure移动服务的.NET后端可以通过Entity Framework轻松公开您的表。但是,关系查询默认情况下无法按预期工作。您可以尝试通过覆盖客户端中的DelegatingHandler来扩展查询,并添加自定义ActionFilterAttribute以在后端包含关系属性。有关更多详细信息,您可以按照此官方tutorial关于通过.NET后端为Azure移动服务检索关系数据。