【发布时间】:2019-02-21 15:06:08
【问题描述】:
在我的应用程序中,我必须编写一个查询来显示来自多个表的数据。换句话说,我必须创建一个查询来连接多个表,并显示来自该查询的所需信息。
查询必须显示特定(选择的)工作人员的所有事件(以及DataGrid 中有关事件的所有数据)。
这是我的 LINQ 的代码:
IList dataList = (from dWorker in App.glidusContext.tbl_workers
where dWorker.workerTZ == strSplit
join d2 in App.glidusContext.tbl_workers_has_tbl_events
on dWorker.workerID equals d2.workerID
join dEvent in App.glidusContext.tbl_events
on d2.eventID equals dEvent.eventID
join dAct in App.glidusContext.tbl_activities
on d2.eventID equals dAct.eventID
select new { d2.damagedVacantionEnd, dEvent, dAct }).ToList();
return dataList;
其中 strSplit 是一个特定的(选择的)工人。
DataGrid 的 XAML 代码:
<DataGrid.Columns>
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_Event_type}"
Width="130"
IsReadOnly="True"
Binding="{Binding Path=dEvent.tbl_eventsType.eventTypeName}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_Classification}"
Width="130"
Binding="{Binding Path=dEvent.tbl_eventsClassification.eventClassificationName}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_Catagory}"
Width="130"
Binding="{Binding Path=dEvent.tbl_eventsCategories.eventCategoryName}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_Evacuation}"
Width="130"
Binding="{Binding Path=d2.damagedEvacuationDescription}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_EvacuationStart}"
Width="130"
Binding="{Binding Path=d2.damagedVacantionStart}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_EvacuationEnd}"
Width="130"
Binding="{Binding Path=d2.damagedVacantionEnd}" />
<DataGridTextColumn Header="{x:Static res:Resources.WinSafetyByEmployee_DataGrid_ColHead_ActivityName}"
Width="*"
Binding="{Binding Path=dAct.activityName}" />
</DataGrid.Columns>
请帮助解决这个查询,现在这个变体不返回值。
我也无法在查询中访问 tbl_objects,因为我需要这样做,因为我认为连接表 tbl_object_has_tbl_events 和 App.glidus 没有显示这样的表。
这是我的数据库的 ERD:
【问题讨论】:
-
如果您在 Visual Studio 中打开数据库的 dbml 文件,tbl_objects_has_tbl_events 类是否出现?如果是这样,您能否打开生成的 Designer.cs 类,复制 tbl_objects_has_tbl_events 类并将其粘贴到您的问题中?另外,如何手动或通过工具(例如 sqlmetal)生成 dbml 文件?
-
嗨,实际上我使用的是 ADO.NET Entity Framework 并生成 EDMX 文件,而不是 DBML。我通过 Visual Studio Whizard 获得的 EDMX 文件,我在其中设置 SQL Server 实例,选择 DB 并选择此 DB 中的所有表。之后它会生成 ERD,我可以通过自动生成的类访问表。