Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
C# SL4、EF、Ria服务-当发生或不发生删除时';服务器端不会发生这种情况,客户端如何知道发生了什么?_C#_Asp.net_Vb.net_Silverlight 4.0_Entity Framework 4 - Fatal编程技术网

C# SL4、EF、Ria服务-当发生或不发生删除时';服务器端不会发生这种情况,客户端如何知道发生了什么?

C# SL4、EF、Ria服务-当发生或不发生删除时';服务器端不会发生这种情况,客户端如何知道发生了什么?,c#,asp.net,vb.net,silverlight-4.0,entity-framework-4,C#,Asp.net,Vb.net,Silverlight 4.0,Entity Framework 4,使用Bill Burrows介绍SL4和WCF Ria服务-高尔夫示例(http://www.myvbprof.com/MainSite/index.aspx#/zSL4_RIA_01),我不希望您看到它,但我想我会将它添加为一个很棒的小教程,供希望通过VB.NET示例了解SL4和WCF Ria服务的人使用 该示例使用客户端和Web设置。该数据库有2个表、课程和分数。您可以创建新课程,然后为该课程添加分数。数据库设置为不允许删除分数表中有相关分数的课程。因此,如果您试图删除已输入分数的课程,则会

使用Bill Burrows介绍SL4和WCF Ria服务-高尔夫示例(http://www.myvbprof.com/MainSite/index.aspx#/zSL4_RIA_01),我不希望您看到它,但我想我会将它添加为一个很棒的小教程,供希望通过VB.NET示例了解SL4和WCF Ria服务的人使用

该示例使用客户端和Web设置。该数据库有2个表、课程和分数。您可以创建新课程,然后为该课程添加分数。数据库设置为不允许删除分数表中有相关分数的课程。因此,如果您试图删除已输入分数的课程,则会出现实体框架错误

默认情况下,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
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
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
我通过向函数添加调用,并添加If/Then:

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
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
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
因此,在DeleteCourse子部分的第一行中,我调用了一个名为CheckForScores的函数,如下所示:

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
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
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阅读。如果这被认为是不允许的,请告诉我,这样我就不会再犯同样的错误:)。

如果我理解正确,您有一个子表和一个父表,如果子表中有任何记录,您就不会删除父表。这里有两种可能的选择

一种是只查询两次,一次查看是否可以删除,另一次实际删除

另一种选择是只调用服务器端方法。使用服务器端方法声明服务器端方法可以有一个返回值,因此回调将能够告诉您是否删除了某些内容。谷歌应该有一些如何使用这个的例子