我对微风.js 很陌生,我需要能够组合两个实体。
现在我无法在一个查询中获得我需要的所有信息。我的解决方案是分别获取两个实体,然后在代码中组合。
这是两个查询:
var query = breeze.EntityQuery
.from("EmployeeLaborTasks")
.where("task_ID", "==", taskID)
.orderBy("employee_ID")
.expand(["Employee", "LaborCategory"]);
var query = breeze.EntityQuery
.from("ForecastedHours")
.where("task_ID", "==", taskID)
.expand("Employee");
EmployeeLaborTasks 是一个连接表,其中包含 taskID、employeeID 和 LaborCategoryID 的外键。这允许我根据 taskID 加载员工及其 LaborCategories。
但是,我仍然需要每个员工的 predictedHours。. .
ForecastedHours 按月输入,因此员工在一年中可能有许多条目(最多 12 个)。因此,没有可用于将 ForecastedHours 添加到第一个查询的适用导航属性。此表包含 taskID 和employeeID 的外键。因此,第二个是必要的。
我想在employee.ID 上加入这两个生成的实体。最终,我将在网格中使用这些信息(通过淘汰赛/Durandal),显示员工姓名、劳动类别和 12 个月内的预测小时数。
这可能吗?加入这些实体会破坏任何使信息可更新的 Breeze.js 跟踪吗?
我也想知道通过淘汰赛的 ko.computed 将它们组合起来是否更好,但我不知道该怎么做。
任何帮助将不胜感激。
为了回应下面的 Dominictus,我发布了相关表格的数据模型:
public class Employee : Person
{
[Key]
public int ID { get; set; }
public string CompanyEmployeeID { get; set; }
public decimal Salary { get; set; }
public decimal UtilizationTarget { get; set; }
public virtual Office OfficeLocation { get; set; }
public virtual Department Department { get; set; }
public virtual JobGrade JobGrade { get; set; }
}
public class EmployeeLaborTasks
{
[Key]
public int ID { get; set; }
public virtual Employee Employee { get; set; }
[ForeignKey("Employee")]
public int Employee_ID { get; set; }
public virtual Task Task { get; set; }
[ForeignKey("Task")]
public int Task_ID { get; set; }
public virtual LaborCategory LaborCategory { get; set; }
[ForeignKey("LaborCategory")]
public int LaborCategory_ID { get; set; }
}
public class ForecastedHours
{
[Key]
public int ID { get; set; }
[Required]
public double Hours { get; set; }
[Required]
public DateTime Date { get; set; }
[Timestamp]
public Byte[] LastModified { get; set; }
public virtual User ModifiedBy { get; set; }
public virtual Employee Employee { get; set; }
public virtual Task Task { get; set; }
[ForeignKey("Task")]
public int Task_ID { get; set; }
[ForeignKey("Employee")]
public int Employee_ID { get; set; }
}
public class Task
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public int Number { get; set; }
[ForeignKey("Contract")]
public int ContractID { get; set; }
public virtual Contract Contract { get; set; }
[Timestamp]
public Byte[] LastModified { get; set; }
public virtual User ModifiedBy { get; set; }
}
public class LaborCategory
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
public decimal Rate { get; set; }
public virtual Contract Contract { get; set; }
[Timestamp]
public Byte[] LastModified { get; set; }
public virtual User ModifiedBy { get; set; }
}