【问题标题】:entitydatasource one to many to one实体数据源一对多对一
【发布时间】:2012-08-16 10:38:39
【问题描述】:

我正在尝试使用实体数据源和查询构建一个下拉列表。我收到以下错误消息,我不确定自己做错了什么:

'UserId' 不是'Transient.collection [WebAppModel. UserSite(Nullable=True, DefaultValue=)]'。要提取集合元素的属性,请使用子查询来迭代集合。靠近简单标识符,第 6 行,第 69 列。

实体数据源

<asp:EntityDataSource ID="edsSites" runat="server" 
                ConnectionString="name=WebAppEntities" 
                DefaultContainerName="WebAppEntities" 
                EntitySetName="Sites" 
                Include="Sites, UserSites" 
                Where="EXISTS(SELECT Sites.SiteId, Sites.Domain FROM Sites 
                            WHERE UserSites.UserId=@UserId)">
    <WhereParameters>
        <asp:Parameter Name="UserId" DbType="Guid" />
    </WhereParameters>
</asp:EntityDataSource>

edm(Site) - Table(Sites)

  • SiteId - PK
  • 列表项
  • 组织结构
  • 名字
  • 姓氏
  • 地址1
  • 地址2
  • 城市
  • 状态
  • 邮政编码
  • 国家标识
  • 电话号码
  • 电子邮件

edm(Us​​erSite) - 表(UserSite)

  • UserId FK
  • SiteId FK

【问题讨论】:

  • 我认为该帖子与我的问题无关?

标签: asp.net c#-4.0 one-to-many edmx entitydatasource


【解决方案1】:

问题已解决!

<asp:EntityDataSource ID="edsSites" runat="server" 
                                    ConnectionString="name=WebAppEntities" 
                                    DefaultContainerName="WebAppEntities" 
                                    EntitySetName="Sites"
                                    Where="EXISTS(SELECT VALUE u FROM it.UserSites AS u WHERE u.UserId = @UserId)" EnableFlattening="False" Select="it.[SiteId], it.[Domain]">
                                    <WhereParameters>
                                        <asp:Parameter Name="UserId" DbType="Guid" />
                                    </WhereParameters>
</asp:EntityDataSource>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    相关资源
    最近更新 更多