使用子实体上的标准来一对多(父子实体)

时间:2018-09-04 21:01:16

标签: entity-framework linq

我有三个实体

Form
 FormProducts (one to Many attach to Form)
 FormFields (one to Many attach to Form)

当我获得Form(使用下面的代码)时,FormProducts和FormFields隐式地附加到表单上,这就是我们所需要的。

Form result = Forms.Where(f => f.Code == "form1").FirstOrDefault()

到目前为止,还不错,但是有一个新的要求,那就是我们还需要检查活性产品的产品标准。

有简单的方法吗?还是我必须对所有三个实体都明确使用join。

我看起来很简单:)

Form result = Forms.Where(f => f.Code == "form1" && f.FormProducts.status == "active").FirstOrDefault()

更新: 对不起,如果我没有说清楚, 考虑使用表格中的以下数据

Form 
id, code(unique)
1, form1, 
2, form2
3, form3

FormProduct
id, formid, name, status
1, 1, prod1, true
2, 1, prod2, false
3, 1, prod3, true

FormField
id, formid, name
1, 1, field1
2, 1, field1
3, 1, field1

我喜欢获取form1及其所有formFields和所有活动的formProducts。这意味着不应包含Prod2。

1 个答案:

答案 0 :(得分:0)

我不确定这是否是实现它的最佳方法,但这就是我暂时隐瞒它,直到找到更好的方法。

Form result = Forms.Where(f => f.Code == "form1").FirstOrDefault()
result.FormProducts = result.FormProducts.Where(f.FormProducts.status == "active").ToList();