我使用Asp.net和EF 4。
在我的模型中,我有两个实体:CmsGroupsTypes
它有一个名为CmsContents
到实体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;
答案 0 :(得分:1)
快速猜测:Include
采用导航属性的名称,而不是:
Include="it.CmsContents.ContentId"
不应该是
Include="it.CmsContents"