我使用 Asp.net 和 EF 4。
在我的模型中,我有两个实体:CmsGroupsTypes
它有一个名为CmsContents
Entity的导航属性CmsContents
。
我将EntityDataSource
控件与 GridView 一起使用。
我需要返回CmsGroupsTypes
但使用导航属性过滤主题和QueryStringParameter
.
使用以下代码,我收到一个错误:
'ContentId' is not a member of 'Transient.collection[CmsModel.CmsContent(Nullable=True,DefaultValue=)]'. To extract a property of a collection element, use a subquery to iterate over the collection
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=CmsConnectionStringEntityDataModel" DefaultContainerName="CmsConnectionStringEntityDataModel"
EnableFlattening="False" EntitySetName="CmsGroupsTypes" Include="it.CmsContents.ContentId"
Where="it.CmsContents.ContentId == ContentId">
<WhereParameters>
<asp:QueryStringParameter Name="ContentId" QueryStringField="ContentId" DbType="Int32" />
</WhereParameters>
</asp:EntityDataSource>
知道我做错了什么吗?
我在 LINQ 中有一个等效版本,它正在工作,但我必须直接在 EntityDataSource 控件上实现。
// Get ContentId from Query String.
int myContentId = Convert.ToInt32(ContentIdFromUrl);
// Find all GroupsType for a specific Content.
var myGroupsTypesList = from g in context.CmsGroupsTypes
where g.CmsContents.Any(x => x.ContentId == myContentId)
select g;