Entity Framework レイヤーがあり、そのレイヤーからクラスを拡張しました。コードは次のとおりです。
public partial class FeatureMaster : EntityObject
{
public string ParentFeatureName
{
get
{
return (from r in Global.dc.FeatureMasters
where r.FeatureId == FeatureParentId
select r).SingleOrDefault().FeatureName;
}
set
{
FeatureParentId = (from r in Global.dc.FeatureMasters
where r.FeatureName == value
select r).SingleOrDefault().FeatureId;
ReportPropertyChanged(("ParentFeatureName"));
ReportPropertyChanged(("FeatureParentId"));
}
}
}
ASP.NET ページで同じものを使用したいと考えています。私の ASP.NET ページのコードは次のとおりです。
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="ListFeatureMaster.aspx.cs" Inherits="Backend.ListFeatureMaster" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cpMain" runat="server">
<asp:GridView ID="grdRecords" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="FeatureId" DataSourceID="EntityDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="FeatureId" HeaderText="FeatureId" ReadOnly="True" SortExpression="FeatureId" />
<asp:BoundField DataField="FeatureName" HeaderText="FeatureName" SortExpression="FeatureName" />
<asp:BoundField DataField="FeatureParentId" HeaderText="FeatureParentId" SortExpression="FeatureParentId" />
<asp:BoundField DataField="FeatureDescription" HeaderText="FeatureDescription" SortExpression="FeatureDescription" />
<asp:TemplateField HeaderText="ParentFeatureName" SortExpression="ParentFeatureName">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="EntityDataSource1"
AppendDataBoundItems="true" DataTextField="ParentFeatureName" DataValueField="ParentFeatureName"
SelectedValue='<%# Bind("ParentFeatureName") %>'>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ParentFeatureName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:EntityDataSource ID="EntityDataSource1" runat="server" ConnectionString="name=BackendEntities"
DefaultContainerName="BackendEntities" EnableFlattening="False" EntitySetName="FeatureMasters"
EntityTypeFilter="FeatureMaster" EnableDelete="True" EnableUpdate="True">
</asp:EntityDataSource>
<asp:EntityDataSource ID="EntityDataSource2" runat="server" ConnectionString="name=BackendEntities"
DefaultContainerName="BackendEntities" EnableFlattening="False" EntitySetName="FeatureMasters"
EntityTypeFilter="FeatureMaster" EnableDelete="True" EnableUpdate="True">
</asp:EntityDataSource>
</asp:Content>
問題は、このコードを実行すると、最初のロードとナビゲーションではうまく機能するのですが、レコードを更新しようとするとエラーが発生することです。同じ問題を解決するのを手伝ってください。
エラーメッセージは次のとおりです。
A property named 'ParentFeatureName' was not found on the entity during an insert, update, or delete operation. Check to ensure that properties specified as binding expressions are available to the data source.