Asp.net 带有EntityDataSource和DropDownList的FormView给出;A财产名称';{0}';在实体上找不到…”;
问题:当我尝试使用Asp.net 带有EntityDataSource和DropDownList的FormView给出;A财产名称';{0}';在实体上找不到…”;,asp.net,entity-framework-4,webforms,Asp.net,Entity Framework 4,Webforms,问题:当我尝试使用EntityDataSource和链接到另一个表的FormView进行更新时,页面加载正常,设置正确,但在更新时我收到以下错误消息: 在插入、更新或删除操作期间,在实体上找不到名为“Vendor.VendorId”的属性。检查以确保指定为绑定表达式的属性对数据源可用 环境和代码:使用Visual Studio 2010、Entity Framework 4、ASP.NET web表单和SQL Server 2008 Express 我有两张桌子;一个零件表和一个供应商表。Par
EntityDataSource
和链接到另一个表的
FormView进行更新时,页面加载正常,设置正确,但在更新时我收到以下错误消息:
在插入、更新或删除操作期间,在实体上找不到名为“Vendor.VendorId”的属性。检查以确保指定为绑定表达式的属性对数据源可用
环境和代码:使用Visual Studio 2010、Entity Framework 4、ASP.NET web表单和SQL Server 2008 Express
我有两张桌子;一个零件
表和一个供应商
表。Part
表有一个链接到Vendor
表的VendorId
列,允许为NULL
。它由实体框架包装
起作用的部分:这里是EntityDataSource
:
<asp:EntityDataSource ID="PartEntityDataSource" runat="server"
ConnectionString="name=PartDBEntities"
DefaultContainerName="PartDBEntities" EnableFlattening="True"
EntitySetName="Parts"
EntityTypeFilter="Part" Where="it.PartId = @PartId"
EnableUpdate="True" EnableInsert="True" Include="Vendor">
<WhereParameters>
<asp:QueryStringParameter Type="Int64" DefaultValue="null" Name="PartId"
QueryStringField="partid" />
</WhereParameters>
</asp:EntityDataSource>
<asp:EntityDataSource ID="VendorEntityDataSource" runat="server"
ConnectionString="name=PartDBEntities"
DefaultContainerName="PartDBEntities" EnableFlattening="False"
EntitySetName="Vendors" />
请注意,我正在根据查询字符串参数将FormView
强制进入Edit
模式或Insert
模式
没有下拉列表
,我就能够在数据库中创建和更新记录
不起作用的部分:现在查看DropDownList
。首先是一个新的EntityDataSource
:
<asp:EntityDataSource ID="PartEntityDataSource" runat="server"
ConnectionString="name=PartDBEntities"
DefaultContainerName="PartDBEntities" EnableFlattening="True"
EntitySetName="Parts"
EntityTypeFilter="Part" Where="it.PartId = @PartId"
EnableUpdate="True" EnableInsert="True" Include="Vendor">
<WhereParameters>
<asp:QueryStringParameter Type="Int64" DefaultValue="null" Name="PartId"
QueryStringField="partid" />
</WhereParameters>
</asp:EntityDataSource>
<asp:EntityDataSource ID="VendorEntityDataSource" runat="server"
ConnectionString="name=PartDBEntities"
DefaultContainerName="PartDBEntities" EnableFlattening="False"
EntitySetName="Vendors" />
正如我上面所说的,初始页面显示得很好;DropDownList
中有正确的条目,并且将正确的供应商设置为正确的值。只需点击Update
按钮即可导致上述错误
以下是堆栈跟踪的相关部分:
[InvalidOperationException:在插入、更新或删除操作期间,在实体上找不到名为“Vendor.VendorId”的属性。检查以确保指定为绑定表达式的属性正确 可用于数据源。]
System.Web.UI.WebControl.EntityDataSourceView.ConvertProperties(IDictionary 值,PropertyDescriptor集合propertyDescriptors, 参数集合引用参数,字典'2转换值) +263
System.Web.UI.WebControl.EntityDataSourceView.ExecuteUpdate(IDictionary 键、IDictionary值、IDictionary旧值)+256
Update(IDictionary键、IDictionary值、IDictionary旧值、DataSourceViewOperationCallback)+95
我希望这是足够的信息 selectedvalue不应该是从PartEntityDataSource的角度来看的,因为VendorEntityDataSource没有绑定整个数据绑定控件,所以您需要使用
HTH.我想我或多或少在做这个家伙正在做的事情:(从5:00到9:20),除了使用FormView而不是GridView。我不确定是什么造成了不同。我想可能就是这样。我还有一个错误,我会告诉你的。太棒了!成功了!有一个带有笑话的老笑话:“一支粉笔的成本:0.49美元。画X的知识:4999.51美元。”非常感谢!是,true:-)忘记了部件类型是绑定上下文,因此不需要它。