I'm using LinqToSql
classes in an ASP.NET website and let's say I have an entity named Testimonials
. Two pages utilise this type - the first being a list of all existing Testimonial
records and the second being an add / editor with which to manage the records.
On the first page we use a simple query, for example:
Public Function GetTestimonials() As IQueryable(Of Testimonial)
Return From testimonial In Context.Testimonials Select testimonial
End Function
This allows population a DataGrid
with the returned items, however on the add / editor page we alter the query ever so slightly:
Public Function FindTestimonial(ByVal id As Integer) As Testimonial
Return (From testimonial In Context.Testimonials Where testimonial.ID = id
Select testimonial).FirstOrDefault()
End Function
This query dies, prior to even trying to populate anything, with the following message:
The method 'Testimonial.add_PropertyChanged' is not a property accessor
I have pretty much identical methods for other data objects which have been and still are executing just fine. One immediate difference I can think of is that this table has been recently updated in the database, removed from the dbml
designer and re-added to the dbml
designer. None of the other tables have undergone this process for some time.
Why is this exception occurring and how can I configure my project appropriately to correct the issue?
I'm going to look into myself now (obviously), but an initial Google search didn't show up anything which could deter me from heading here, and to be quite honest I don't have time to figure it all out and understand why - that'll have to come when I find the answer!
EDIT:
The code making the call to FindTestimonial
is as follows (I can't see the link to the red herring suggested by Gabe, however, I'm not the one with the answers in this predicament):
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
Where DataServices
is simply a list of our available data service classes which are preloaded with a page (such code works flawlessly throughout multiple projects, so I can't see the problem rising that far up) 开发者_运维百科and the GetService
can simply be translated into newing up an instance.
Okay, so the solution was as simple as follows:
Remove the
Testimonial
class from thedbml
designerSave all and then build all
Drag the
Testimonial
table fromServer Explorer
afreshSave all and then build all
Although this resolved my issue, it doesn't tell me or help me deduce why this occurred. If anyone would like to elaborate further on that subject then I won't be ignorant of learning the facts, so please do so.
精彩评论