.net 实体框架自定义属性数据绑定错误
我有一个从具有整数属性hide的表生成的实体。我在一个分部类HideBoolean中创建了一个自定义属性,用于将integer属性转换为boolean属性.net 实体框架自定义属性数据绑定错误,.net,vb.net,entity-framework,.net,Vb.net,Entity Framework,我有一个从具有整数属性hide的表生成的实体。我在一个分部类HideBoolean中创建了一个自定义属性,用于将integer属性转换为boolean属性 Public Property HideBoolean As Boolean Get Return If(hide = 1, True, False) End Get Set(ByVal value As Boolean) Me.hide
Public Property HideBoolean As Boolean
Get
Return If(hide = 1, True, False)
End Get
Set(ByVal value As Boolean)
Me.hide = If(value, 1, 0)
End Set
End Property
我正在使用一个连接到实体的实体数据源将数据绑定到formview,布尔属性将数据绑定到复选框。在更新formview上的记录时,我收到以下错误消息
在插入、更新或>删除操作期间,在实体上找不到名为“HideBoolean”的属性。检查以确保指定为绑定表达式的属性>对数据源可用
我已经在setter上做了一些日志记录,但在更新中并没有遇到这个问题
为了测试实体,我尝试在代码中更改一条记录的布尔属性值,并保存该记录,这样做有效
Dim a As New Data.PortalEntities
Dim r As Data.Reports_Reports = a.Reports_Reports.Where(Function(b) b.reportID = reportID).FirstOrDefault
r.HideBoolean = Not r.HideBoolean
a.SaveChanges()
表中的值已成功更改
编辑:这是我的aspx中的代码
<asp:EntityDataSource ID="EntityDataSource1" runat="server" ConnectionString="name=PortalEntities" DefaultContainerName="PortalEntities"
EnableFlattening="False" EnableUpdate="True" EntitySetName="Reports_Reports" AutoGenerateWhereClause="true">
<WhereParameters>
<asp:Parameter DefaultValue="311" Name="reportID" Type="Int32" />
</WhereParameters>
</asp:EntityDataSource>
<asp:FormView ID="FormView1" runat="server" DataKeyNames="reportID" DataSourceID="EntityDataSource1" DefaultMode="Edit">
<EditItemTemplate>
HideBoolean:
<asp:CheckBox ID="HideBooleanCheckBox" runat="server" Checked='<%# Bind("HideBoolean") %>' />
<asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" />
<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
</EditItemTemplate>
</asp:FormView>
当你说你已经改变了代码中的布尔属性,这就行了,你是不是把布尔型的HideBoolean的名字改成了别的名字。也许你只需要清理和重建?@Xaisoft抱歉,我的意思是我已尝试更改记录的属性值并保存了记录,我将在问题中添加代码。好的,如果手动设置HideBoolean导致记录保存,是否确实设置了HideBoolean?是,在使用代码时,会调用HideBoolean上的setter。但是在你的帖子中,你说在更新时不会命中setter。