1

Asp.net と EF 4 を使用しています。

私のモデルには 2 つの Entity があります。これには EntityCmsGroupsTypesと呼ばれるナビゲーション プロパティがあります。CmsContentsCmsContents

EntityDataSourceGridView と共にコントロールを使用しています。

戻る必要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;
4

1 に答える 1

1

簡単な推測:Includeナビゲーションプロパティの名前をとるので、代わりに:

Include="it.CmsContents.ContentId"

あるべきではない

Include="it.CmsContents"

于 2011-07-05T12:04:23.967 に答える