breeze.js一对多

时间:2013-01-10 00:38:51

标签: entity-framework breeze

我目前正在建立一个带有Web API和淘汰赛等的SPA。到目前为止,我已经将自己的简单数据文本转换为非常好的。 我碰到了微风,并认为这可能值得一试。特别是我希望在实体之间进行更简单的导航...

用微风加载实体或单个实体工作正常。使用导航属性似乎不起作用。导航属性始终为空,即使它是一对多关系。

这是我的模型(简化):

public class WorkdayHours
{
    public int Id { get; set; }

    public bool IsWorkDay { get; set; }
    ...
    public Byte WeekDay { get; set; }
}

public class Service
{
    public int Id { get; set; }
    public string DisplayName { get; set; }
    public virtual ICollection<WorkdayHours> BookableDays { get; set; }
}
public class Employee
{
    public int Id { get; set; }
    public string DisplayName { get; set; }
    public virtual ICollection<WorkdayHours> BookableDays { get; set; }
}
public class Shop
{
    public int Id { get; set; }
    public string DisplayName { get; set; }
    public virtual ICollection<WorkdayHours> BookableDays { get; set; }
}

然后我在我的SPA中获取实体服务,如下所示:

var query = EntityQuery
            .from('Services')   
            .where('id', 'eq', serviceId)
            .expand('BookableDays'); 

当执行查询时,我得到的结果是所请求的服务实体除了bookableDay属性之外的所有数据总是一个空数组。 当我检查Json的答案时,我发现工作日的传输也很轻松,而且微风甚至会调用我为这些实体定义的ctors。但是它们没有链接到bookableDays属性本身。

在检查生成的数据库模型时,EF会按照预期在工作日为服务,员工和商店生成外键。

微风不能拥有几个可选的外键吗?

建议与想法高度相关。

1 个答案:

答案 0 :(得分:3)

Breeze依赖于外键。我遇到了类似的问题。这应该解决它: EF也为我生成了ForeignKeys以及相关的Entites仍然是空的。据我所知,breeze需要显式注释/配置ForeignKey字段。

public class Mvl
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long MvlId{ get; set; }

    public DateTime CreatedAt { get; set; }

    [InverseProperty("Mvl")]
    public ICollection<MvlOP> MvlOps { get; set; }

    public DateTime? ReleasedAt { get; set; }
    public DateTime? LockedAt { get; set; }
    public DateTime? ClosedAt { get; set; }

    //[ConcurrencyCheck]
    //public int? RowVersion { get; set; }

    [Timestamp]
    public byte[] TimeStamp { get; set; }
}

public class MvlOP
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long MvlOpId { get; set; }


    public long MvlId { get; set; }
    [ForeignKey("MvlId")]
    public Mvl Mvl { get; set; }

...
}