我之间有以下多对多模型 ProjectUserProfile 实体。由于 Breeze 尚不支持多对多关系,因此我公开了中间实体 ProjectMember 以及。所以服务器端代码如下所示:

public class Project
{
   public int ProjectId { get; set; }
   public String Name { get; set; }
   public virtual List<ProjectMember> ProjectMembers { get; set; }
}

public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public virtual List<ProjectMember> ProjectMembers { get; set; }
}

public class ProjectMember
{
    public int ProjectId { get; set; }
    [ForeignKey("ProjectId")]
    public Project Project { get; set; }

    public int UserId { get; set; }
    [ForeignKey("UserId")]
    public UserProfile UserProfile { get; set; }
}

从服务器返回的元数据似乎是正确的:

enter image description here

导航属性似乎已由服务器正确发送。

当我通过以下方式向客户请求项目时:

var query = entityQuery.from("Projects")
                       .where('projectId', '==', projectId)
                       .expand("projectMembers");

返回的 JSon 数据是预期的:

enter image description here

但是,那 Project.ProjectMembers 正如您从下面的屏幕截图中看到的那样,导航属性在客户端上未正确构建:

enter image description here

我浏览了教程、微风文档、与导航属性相关的问题,但我仍然没有看到我做错了什么。

问题:鉴于上述信息,为什么 Breeze 没有加载 ProjectMembers 导航属性?

有帮助吗?

解决方案

我首先检查 EntityManager 的元数据存储,以确保可以找到 ProjectMember 实体类型。您可以在第一次查询后通过以下方式执行此操作

var projectMemberType = myEntityManager.metadataStore.getEntityType("ProjectMember");

如果未找到projectMemberType,则问题与未正确删除元数据有关。

另一种可能性是,您是否为 ProjectMember 类型定义了一个键(大概是一个由两部分组成的键)?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top