Asp.net 将对实体模型的更改保存到数据库

Asp.net 将对实体模型的更改保存到数据库,asp.net,database,entity-framework,Asp.net,Database,Entity Framework,我是实体框架的新手,正在扩展现有的代码库。我使用jQuery将所需的信息传递回服务器ajaxy样式,因此我不能使用TryUpdateModel()。代码如下: <HttpPost()> Function UpdateRoster() As JsonResult Dim model As New Models.ViewModels.PlayerAdmin Dim jsonString As String = Request.Form("json

我是实体框架的新手,正在扩展现有的代码库。我使用jQuery将所需的信息传递回服务器ajaxy样式,因此我不能使用
TryUpdateModel()
。代码如下:

<HttpPost()>
    Function UpdateRoster() As JsonResult
        Dim model As New Models.ViewModels.PlayerAdmin

        Dim jsonString As String = Request.Form("json")

        model = Deserialise(Of Models.ViewModels.PlayerAdmin)(jsonString)

        For Each playerAdminPlayer As Models.ViewModels.PlayerAdminPlayer In model.Roster
            Dim playerToTeam As New DAL.PlayersToTeam
            Dim player As DAL.Player = PlayerAdminManager.GetPlayerById(playerAdminPlayer.PlayerId)
            player.FirstName = playerAdminPlayer.FirstName
            PlayerAdminManager.SaveChanges()
        Next playerAdminPlayer


        Dim playerAfter As DAL.Player = PlayerAdminManager.GetPlayerById(model.Roster.First.PlayerId)

        Return Json(New With {.success = False, .message = playerAfter.FirstName})

    End Function 
编辑

集装箱代码:

 Private _Container As DAL.LateralSportsContainer
    Protected ReadOnly Property Container As DAL.LateralSportsContainer
        Get
            If _Container Is Nothing Then
                Dim connStr As New System.Data.EntityClient.EntityConnectionStringBuilder
                connStr.ProviderConnectionString = Web.Configuration.WebConfigurationManager.ConnectionStrings("ApplicationServices").ConnectionString
                connStr.Metadata = "res://*/Lateral.csdl|res://*/Lateral.ssdl|res://*/Lateral.msl"
                connStr.Provider = "System.Data.SqlClient"
                _Container = New DAL.LateralSportsContainer(connStr.ConnectionString)
            End If

            Return _Container
        End Get
    End Property

原来我使用的是一个非静态(共享)的
容器。
我有两个
Manager
类,这两个类都是从
BaseManager
类继承的,都是定义的
容器。我在一个
管理器中执行查询命令,并在另一个中保存


容器是DataContext的静态或缓存实例吗?你能展示一下与创建和存储容器相关的代码吗?@wonkim00-这就是你所需要的吗?是的,这就是我想要的,但我看不出有什么错。我不认为这是DataContext生命周期管理问题——它会被创建和缓存,随后对PlayerAdminManager上的方法的调用会使用缓存实例,因此更改跟踪应该是活动的,不需要附加修改过的对象。对不起,谢谢你看。附加修改的对象是什么意思?(我对实体框架完全陌生)我还要确认,当您重新加载页面时,正在创建一个全新的DataContext。在容器getter中放置断点。如果它以某种方式使用缓存副本,那么对实体调用Refresh()可能会有所帮助。
 Private _Container As DAL.LateralSportsContainer
    Protected ReadOnly Property Container As DAL.LateralSportsContainer
        Get
            If _Container Is Nothing Then
                Dim connStr As New System.Data.EntityClient.EntityConnectionStringBuilder
                connStr.ProviderConnectionString = Web.Configuration.WebConfigurationManager.ConnectionStrings("ApplicationServices").ConnectionString
                connStr.Metadata = "res://*/Lateral.csdl|res://*/Lateral.ssdl|res://*/Lateral.msl"
                connStr.Provider = "System.Data.SqlClient"
                _Container = New DAL.LateralSportsContainer(connStr.ConnectionString)
            End If

            Return _Container
        End Get
    End Property