我知道做出这样的询问并不是什么不寻常的事,但我想我迷路了,所以我寻求帮助。我必须使用关系1:N的表格,并使其更清晰我将从管理工作室发布一个打印屏幕:
我正在开发一个asp.net mvc 3项目,我需要查看所有Documents
将被显示的视图(以及一些过滤器和内容,但我认为这与此案例无关)。我需要表Documents
中的数据,而DocumentFields
表中每个文档只需要一个特定记录。此记录是包含Document名称的记录,它的唯一性是DocumentID == Docmuents.Id,DocumentFields.RowNo == 1和DocumentsFields.ColumnNo == 2.这是每个Document的唯一记录,我需要获取{来自此记录的{1}}实际上包含文档的名称。
我不太确定如何构建我的查询(可能使用JOIN),我也想让我的视图强类型传递类型FieldValue
的模型,但我不确定它是否可行,但是我认为,根据构建查询的方式,将确定视图模型的类型。
答案 0 :(得分:3)
我相信你想要的是这样的:
var results =
from d in dbContext.Documents
join df in dbContext.DocumentFields
on new { d.Id, RowNo = 1, ColumnNo = 2 } equals
new { Id = df.DocumentId, df.RowNo, df.ColumnNo }
select new
{
Document = d,
DocumentName = df.FieldValue
};
当然,如果你设置导航属性,你可以这样做:
var results =
from d in dbContext.Documents
let df = d.DocumentFields.First(x => x.RowNo == 1 && x.ColumnNo == 2)
select new
{
Document = d,
DocumentName = df.FieldValue
};