我在ASP.NET网站中使用LinqToSql
类,假设我有一个名为Testimonials
的实体。两个页面使用此类型 - 第一个是所有现有Testimonial
记录的列表,第二个是用于管理记录的添加/编辑器。
在第一页上,我们使用简单查询,例如:
Public Function GetTestimonials() As IQueryable(Of Testimonial)
Return From testimonial In Context.Testimonials Select testimonial
End Function
这允许使用返回的项目填充DataGrid
,但是在添加/编辑器页面上,我们稍微改变了查询:
Public Function FindTestimonial(ByVal id As Integer) As Testimonial
Return (From testimonial In Context.Testimonials Where testimonial.ID = id
Select testimonial).FirstOrDefault()
End Function
此查询在尝试填充任何内容之前就会消失,并显示以下消息:
The method 'Testimonial.add_PropertyChanged' is not a property accessor
对于已经并且仍在执行的其他数据对象,我有几乎相同的方法。我能想到的一个直接差异是,该表最近已在数据库中更新,已从dbml
设计器中删除并重新添加到dbml
设计器中。其他表没有一段时间经历过这个过程。
为什么会发生此异常?如何正确配置项目以纠正问题?
我现在(很明显)会调查自己,但最初的谷歌搜索没有显示任何可能阻止我前往这里的东西,并且说实话我没有时间去理解这一切出来并理解为什么 - 当我找到答案时必须要来!
编辑:
调用FindTestimonial
的代码如下(我看不到Gabe建议的红鲱鱼的链接,但是,我不是那个在这种困境中得到答案的人):< / p>
Private Sub PopulateView()
If (TestimonialId > 0) Then
Dim testimonialService = DataServices.GetService(Of TestimonialService)()
Dim testimonial = testimonialService.FindTestimonial(TestimonialId)
If (testimonial IsNot Nothing) Then
NameTextBox.Text = testimonial.Name
LocationTextBox.Text = testimonial.Location
MessageTextBox.Text = testimonial.Message
PublishDateTextBox.Text = testimonial.PublishDate
IsActiveCheckBox.Checked = testimonial.IsActive
End If
End If
End Sub
Public ReadOnly Property TestimonialId() As Integer
Get
Return Domain.Web.UI.QueryString.GetValue(Web.UI.QueryStringParameter.TestimonialId)
End Get
End Property
其中DataServices
只是我们可用的数据服务类的列表,这些类预先加载了一个页面(这样的代码可以在多个项目中完美运行,所以我看不到问题上升到那么远)并且GetService
可以简单地翻译成新的实例。
答案 0 :(得分:0)
好的,所以解决方案很简单如下:
从Testimonial
设计师
dbml
课程
全部保存,然后构建所有
从Testimonial
重新拖动Server Explorer
表
全部保存,然后构建所有
虽然这解决了我的问题,但它没有告诉我或帮助我推断为什么发生这种情况。如果有人想进一步阐述这个问题,那么我就不会不了解事实,所以请这样做。