如果我分离上下文,我会松开所有的关系,如果我不这样做,我以后就无法保存,因为实体的上下文已被处理......
这是我的代码
的一个例子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
这是不可能的吗?
答案 0 :(得分:1)
在请求开始时(直接或间接)创建上下文,并在请求结束时将其处理。大多数人使用带有专用HTTP处理程序的DI容器,但是如果你不想去那条路线,你可以在Global.asax.cs中使用它。就个人而言,我使用的是MVC,所以我在控制器工厂中这样做。
然后,任何需要上下文的东西都可以从DI容器中获取它(或者通过构造函数注入),并且每个请求的整体都有一个上下文。