我所拥有的是两个表,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:否 属性或字段'DTRoleID'存在于'EntitySet`1'
类型中
我希望我提供足够的信息,任何帮助都会很棒。
答案 0 :(得分:1)
我假设您正在指定select子句,这是数据的只读视图。如果是这样,您的问题有一个相当简单的解决方案。但是,如果不是这样(我不确定,因为您的代码调用Bind
方法而不是Eval
),更新相关字段需要更复杂的处理{{1}指定LinqDataSource
成员的情况不允许更新。
确保在子句中选择Select
成员,但从选择中删除DTPersonnels
。如果您致电DTPersonnels.DTRoleID
,它将显示相关记录的会员价值。
但我认为,架构文件的配置也存在问题。根据我的推断,您希望Eval("DTPersonnels.DTRoleID")
和Publications
之间存在一对一的关系。但是,由于错误表明DTPersonnel
上没有成员,这意味着您允许EntitySet
有多个Publications
的1对多关系。如果没有一对一的关系,您的代码将无法确定要显示哪个相关记录DTPersonnel
。
如果您确实 DO 打算与DTRoleID
相关的许多DTPersonnel
,那么您可能希望从显示列表的其他方式处理此问题Publication
并显示相关的DTPersonnel
数据。
答案 1 :(得分:0)
如果你想知道错误本身来自哪里,它就在这里:
Select="new (DTPersonnels.DTRoleID,PublicationID, DTPersonnels, ActLAYDate, ActRRIPDate, ActPPIDate, ActPPODate, ActECTWDate, TargetECTWDate, TargetPPIDate, TargetRRIPDate, TargetPPODate, TargetLAYDate)">
由于您正在从Publications表中选择数据,因此它正在那里寻找一个字段“DTRoleID”。我猜这个表没有“DTRoleID”字段,导致你收到的错误。