Asp.net と EF 4 を使用しています。
私のモデルには 2 つの Entity があります。これには EntityCmsGroupsTypes
と呼ばれるナビゲーション プロパティがあります。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;