Я использую 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;