如何在不同的应用程序层上处理作为子节点的其他实体的实体

时间:2010-02-15 20:52:33

标签: .net entity-framework

如果我分离上下文,我会松开所有的关系,如果我不这样做,我以后就无法保存,因为实体的上下文已被处理......

这是我的代码

的一个例子
Public Sub Save()
    Using ctx As HMIEntities = New HMIEntities
        ctx.AttachUpdated(Me) //I use this extension method that works fine if I detach in the get method and the entity has no properties as entities
        ctx.SaveChanges()
    End Using
End Sub

Public Shared Function GetByID(ByVal ID As Integer) As Page
    Dim retval As Page
    Using ctx As HMIEntities = New HMIEntities                        
        retval = ctx.PageSet.Include("PageContent").FirstOrDefault(Function(p) p.Slug = ID)            
    End Using
    Return retval
End Function

这是不可能的吗?

1 个答案:

答案 0 :(得分:1)

在请求开始时(直接或间接)创建上下文,并在请求结束时将其处理。大多数人使用带有专用HTTP处理程序的DI容器,但是如果你不想去那条路线,你可以在Global.asax.cs中使用它。就个人而言,我使用的是MVC,所以我在控制器工厂中这样做。

然后,任何需要上下文的东西都可以从DI容器中获取它(或者通过构造函数注入),并且每个请求的整体都有一个上下文。