Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 带有EntityDataSource和DropDownList的FormView给出;A财产名称';{0}';在实体上找不到…”;_Asp.net_Entity Framework 4_Webforms - Fatal编程技术网

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:-)忘记了部件类型是绑定上下文,因此不需要它。