代码之家  ›  专栏  ›  技术社区  ›  Orion Adrian

EntityDataSource是否支持“it.property.property”语法?

  •  1
  • Orion Adrian  · 技术社区  · 15 年前

    我有一个EntityDataSource,在这里我尝试替换以前的代码。我的EntityDataSource如下所示:

        <asp:EntityDataSource 
            runat="server" 
            ID="personDataSource" 
            ContextTypeName="Model.GuidesEntities" 
            EntitySetName="CharacterFavorites" 
            OrderBy="it.Person.FullName" 
            Select="it.Person.Id" 
            Where="it.UserName = @userName" />
    

    当我实际使用它时,我会得到错误:

    “person”不是类型的成员 “中的”transient.rowtype[(id,edm.int32(nullable=true,defaultvalue=)]' 当前加载的架构。

    EntityDataSource是否不支持遍历关系?您将如何处理EntityDataSource?

    @userName 参数目前正在代码隐藏中添加。任何知道如何直接在WhereParameters集合中指定用户名参数的人都可以获得额外的积分。

    3 回复  |  直到 9 年前
        1
  •  1
  •   Slauma    15 年前

    没有标准的预定义参数类型允许您获取当前用户名作为标记中的where参数(我猜您所说的是 User.Identity.Name )简单的比如…

    <asp:Parameter Name="userName" DefaultValue='<%# User.Identity.Name %>' />
    

    …不起作用,因为您不能在参数控件中使用数据绑定语法。

    但你可以创造 custom parameters . (该页的后半部分是“用户名参数”的具体示例。)

    对于您的问题,有一个例外:我在EntityDataSource中使用了很多导航属性的“IT语法”,它看起来或多或少与您的示例完全相同。如果看不到更多的模型,很难知道是什么导致了错误。但通常,支持在EntityDataSource中的属性之间导航,并且可以工作。

        2
  •  2
  •   GHP    14 年前

    EF在这里使用“超级懒惰加载”(我自己的术语)。它不会自动伸出并抓取关联的“人”对象。您必须在EntityDataSource内部指定其他哪些对象可用。所以您需要添加这一行:“include=”person“。见下文:

     <asp:EntityDataSource 
            runat="server" 
            ID="personDataSource" 
            ContextTypeName="Model.GuidesEntities" 
            EntitySetName="CharacterFavorites" 
            OrderBy="it.Person.FullName" 
            Select="it.Person.Id" 
            Where="it.UserName = @userName" 
            Include="Person"  />
    

    如果需要添加多个关联,请用逗号分隔它们:include=“person,dog,chicken,salesorder” 另外,在WHERE子句中它是“=”而不是“=”。

        3
  •  0
  •   GBK    13 年前
       protected void MyNotesSelecting(object sender, EntityDataSourceSelectingEventArgs e)
                {
                    e.DataSource.Where = "it.UserName=="+User.Identity.Name
                }
    
    推荐文章