我已经使用 EF4 EntityDataSources 成功地进行了 DataBinding,但这是一个让我难过的案例:
表“CurrentComplaintsByUsers”有一个指向“Complaints”表的外键。所以在 EF 中,我可以访问 CurrentComplaintByUser 记录,并像这样导航到其父投诉:
var ccU = dataContext.CurrentComplaintsByUsers.First();
var parentComplaint = ccU.Complaint;
当我基于 CurrentComplaintsByUsers 启动一个 EntityDataSource 来绑定一个网格视图时,我想从“投诉”对象过渡到一个称为“状态”的投诉关联。这是我的投诉表中的 StatusID,因此在代码中我可以像这样点击投诉的状态,包括 Status 属性:
string statusLabel = parentComplaint.Status.LabelText;
失败:当我尝试将这一切烘焙到 EntityDataSource 中时,我无法从我的起始项目“CurrentComplaintsByUsers”转到“状态”。这是我的 EDS:
<asp:EntityDataSource ID="edsCurrentCases" runat="server"
ConnectionString="name=EOCaseDataModel" DefaultContainerName="EOCaseDataModel"
EnableFlattening="False" EntitySetName="CurrentComplaintsByUsers"
Include="Complaint, Status">
</asp:EntityDataSource>
我的错误是这样的:
System.InvalidOperationException
"A specified Include path is not valid.
The EntityType 'EOCaseApp.CurrentComplaintsByUser' does not declare a navigation property with the name 'Status'."
我试图达到这在我的 Gridview 中起作用的地步:
<%# ((CurrentComplaintsByUser)Container.DataItem).Complaint.Status.LabelText %>
那么,仅使用声明性标记,我如何从 EDS 获取相关对象关联?(我可以在代码中做到这一点,只是尽可能地尝试专门使用 EDS)
其他注意事项:如果我从 EDS 中的“包含”中删除“状态”,那么当它在我的 Gridview 中点击 ..Complaint.Status.LabelText 时,我会得到一个 NULL ERROR,这几乎是你所期望的。