0

我有两张表,Publication 和 DTPersonnel。发布有一个主键,另一个(DTPersonnel)有一个链接回发布的字段。我为我的 LinqDataSource 发送了一个 DBML 布局并链接了两个表。我已将 LinqDataSource 组件添加到我的网页和(用于测试)一个标签。

然后我将标签数据绑定设置为指向 DTPersonnel.DTRoleID 中的一个字段,如下所示:

 <asp:FormView ID="FormView1" runat="server" AllowPaging="True" 
        DataSourceID="LinqDataSource1">
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server" 
    Text='<%# BIND("DTPersonnels.DTRoleID") %>'></asp:Label>
        </ItemTemplate>
    </asp:FormView>
    </asp:Content>

我的 LinqDataSource 设置如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Layout.aspx.cs" Inherits="AequorPubTracker.Account.Layout" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
        ContextTypeName="AequorPubTracker.LayoutDataContext" EntityTypeName="" 
        onselecting="LinqDataSource1_Selecting" TableName="Publications" 

        Select="new (DTPersonnels.DTRoleID,PublicationID, DTPersonnels, ActLAYDate, ActRRIPDate, ActPPIDate, ActPPODate, ActECTWDate, TargetECTWDate, TargetPPIDate, TargetRRIPDate, TargetPPODate, TargetLAYDate)">
    </asp:LinqDataSource>

但是当我在浏览器中运行该应用程序时,出现以下错误:

异常详细信息:System.Web.Query.Dynamic.ParseException:“EntitySet`1”类型中不存在属性或字段“DTRoleID”

我希望我提供了足够的信息,任何帮助都会很棒。

4

2 回答 2

1

我假设由于您指定了 select 子句,因此这是数据的只读视图。如果是这样,您的问题有一个相当简单的解决方案。但是,如果不是这样(我不确定,因为您的代码调用该Bind方法而不是Eval),则需要更复杂的处理来更新相关字段,因为指定LinqDataSourceSelect成员不允许更新。

确保选择DTPersonnels子句中的成员,但从DTPersonnels.DTRoleID选择中删除。如果调用Eval("DTPersonnels.DTRoleID")它将显示相关记录的成员值。

但是,我认为您的架构文件的配置也存在问题。Publications根据我的推断,您期望和之间存在一对一的关系DTPersonnel。但是,由于错误表明 上没有成员EntitySet,这意味着您已允许Publications具有许多的一对多关系DTPersonnel。如果没有一对一的关系,您的代码将无法确定DTRoleID要显示哪些相关记录。

如果您确实打算有许多DTPersonnel与 a 相关,那么您可能希望从显示列表并显示其相关数据Publication的其他方式来解决此问题。DTPersonnelPublication

于 2011-10-19T19:36:30.747 回答
0

如果您想知道错误本身来自哪里,它位于此处:

Select="new (DTPersonnels.DTRoleID,PublicationID, DTPersonnels, ActLAYDate, ActRRIPDate, ActPPIDate, ActPPODate, ActECTWDate, TargetECTWDate, TargetPPIDate, TargetRRIPDate, TargetPPODate, TargetLAYDate)">

由于您正在从 Publications 表中选择数据,因此它正在那里寻找“DTRoleID”字段。我猜该表没有“DTRoleID”字段,导致您收到错误。

于 2011-10-19T19:49:34.480 回答