Использование Bill Burrows Intro для SL4 и WCF Ria Services - Пример игры в гольф (http://www.myvbprof.com/MainSite/index.aspx#/zSL4_RIA_01),, на который вы не ожидаете взглянуть, но подумал, что добавлю его как отличный маленький учебник для тех, кто хочет немного научиться о сервисах SL4 и WCF Ria на примере VB.NET.
В примере используются настройки клиента и веб-интерфейса. База данных имеет 2 таблицы, курсы и оценки. Вы можете создавать новые курсы, а затем добавлять оценки для этого курса. База данных настроена так, чтобы не позволять вам удалять курсы, имеющие связанные баллы, в таблице баллов. Поэтому, если вы попытаетесь удалить курс, для которого вы ввели баллы, вы получите ошибку Entity Framework.
Sub DeleteCourse по умолчанию выглядит так:
Public Sub DeleteCourse(ByVal course As Course)
If (course.EntityState = EntityState.Detached) Then
Me.ObjectContext.Courses.Attach(course)
End If
Me.ObjectContext.Courses.DeleteObject(course)
End Sub
Я изменил его, чтобы он выглядел так, добавив вызов функции и добавив If / Then:
Public Sub DeleteCourse(ByVal course As Course)
Dim myCourseKeyValue As Integer = CheckForScores(course.CourseKey)
If myCourseKeyValue = 0 Then
If (course.EntityState = EntityState.Detached) Then
Me.ObjectContext.Courses.Attach(course)
End If
Me.ObjectContext.Courses.DeleteObject(course)
End If
End Sub
Итак, в первой строке подпункта DeleteCourse я вызываю функцию CheckForScores, которая выглядит следующим образом:
Private Function CheckForScores(ByVal selectedCourseKey As Integer) As Integer
Using dc As New Golf_DB1Entities
Dim myScores = (From o In dc.Scores Where o.CourseKey = selectedCourseKey Select o).Count
Return myScores
End Using
End Function
Таким образом, в основном я вызываю функцию CheckForScores, чтобы проверить, существуют ли какие-либо записи в таблице баллов для выбранного курса. Это работает нормально, и я знаю, что, возможно, есть более простой способ получить эту информацию, и я открыт для предложений, но мой фактический вопрос заключается в том, что это сервис, вызываемый из клиента, как только я выясняю, что есть Записи баллов в таблице баллов для выбранного курса (со стороны сервера). Я не удаляю запись из базы данных, но как клиентская часть приложения SL4 узнает, что удаление на самом деле не произошло?
Мне очень жаль, если это не имеет никакого смысла ...
Кроме того, это нормально, что я пометил этот вопрос как VB.NET и C # ???, хотя технически это вопрос VB.NET, я знаю, что большинство пользователей SO используют C # и, вероятно, могут читать через VB. Если это считается недопустимым, дайте мне знать, чтобы я больше не повторял ту же ошибку:).