BreezeJs - 当两个外键与公共实体相关时使用expand()

时间:2015-02-17 21:34:50

标签: breeze expand entities

说,我有两个实体,Movement (id, #fromLocationId, #toLocationId) fromLocationId toLocationId 是第二个实体Location (id, name)的两个外键。我想写一个Breeze查询,检索所有与 fromLocationId toLocationId 相关的位置名称的动作。这是我到目前为止所得到的:

var query = breeze.EntityQuery('movement').expand('location');

例如,当我调试它并检查第一条记录时,我发现它有一个 location() location1()属性。我可以从data[0].location().name()检索 fromLocationId 的位置名称,但不能与 toLocationId 的位置名称相同,因为 location1()是空值。我甚至试过var query = breeze.EntityQuery('movement').expand('location, location1');,但它仍然没有用。

关于如何解决这个问题的任何想法?提前谢谢。

修改

以下是.NET类:

[Table("Location")]
public partial class Location
{
    public Location()
    {
        Movements = new HashSet<Movement>();
        Movements1 = new HashSet<Movement>();
    }

    public int Id { get; set; }

    [StringLength(250)]
    public string Name { get; set; }

    public virtual ICollection<Movement> Movements { get; set; }

    public virtual ICollection<Movement> Movements1 { get; set; }
}

[Table("Movement")]
public partial class Movement
{
    public int Id { get; set; }

    public int FromLocationId { get; set; }

    public int ToLocationId { get; set; }

    public virtual Location Location { get; set; }

    public virtual Location Location1 { get; set; }
}

在DbContext类中,关系如下所示:

        modelBuilder.Entity<Location>()
            .HasMany(e => e.Movements)
            .WithRequired(e => e.Location)
            .HasForeignKey(e => e.FromLocationId)
            .WillCascadeOnDelete(false);

        modelBuilder.Entity<Location>()
            .HasMany(e => e.Movements1)
            .WithRequired(e => e.Location1)
            .HasForeignKey(e => e.ToLocationId)
            .WillCascadeOnDelete(false);

感谢。

1 个答案:

答案 0 :(得分:0)

好的,我发现了我需要做的事情。这是解决方案:

var query = breeze.EntityQuery('movement').expand('location, location')

我想,Breeze明白这一点,expand()中的第一个位置将与 fromLocationId 和第二个位置将与 toLocationId 相关。换句话说,添加与该公共实体相关的外键entity

希望它可以帮助别人。