¿Cuál es la mejor práctica en términos de configuración de mi DataContext para facilitar el acceso en mis clases LinqToSql extendidas?¿LinqToSql declara y crea una instancia de las mejores prácticas de DataContext?
Por ejemplo, tengo una entidad "Usuario" en mi dbml y quiero añadir métodos a esa clase de esta manera:
Partial Public Class User
Public Function GetUser(ByVal UserID as Integer) as User
'Do Work
End Function
End Class
Con el fin de acceder a mi DataContext que tendría que declarar en el interior el método como lo siguiente:
Partial Public Class User
Public Function GetUser(ByVal UserID as Integer) as User
Dim dc as New MyDataContext()
Return (From u in dc.Users Where u.ID = UserID).Single()
End Function
End Class
Me gustaría no tener que hacer eso para cada método. Normalmente (si no estuviera extendiendo las clases DBML LinqToSql) tan sólo pudiera hacer esto:
Partial Public Class User
Private dc as MyDataContext
Public Sub New()
dc = new MyDataContext()
End Sub
Public Function GetUser(ByVal UserID as Integer) as User
Return (From u in dc.Users Where u.ID = UserID).Single()
End Function
Public Function GetAllUsers() as IEnumerable(Of User)
Return From u in dc.Users
End Function
'etc...
End Class
Esto permitiría que tenga acceso a la DataContext para cada método sin tener que declarar de nuevo cada vez. Pero, por supuesto, no puedes hacer eso porque el dbml ya tiene un constructor. Y agregar código en el dbml siempre se sobrescribe si alguna vez cambia algo.
¿Alguien tiene alguna buena idea sobre cómo ahorrarme un código de exceso aquí?
TIA!
El contexto de datos en sí es bastante ligero, aunque podría referirse a muchas entidades. Eliminarlo para liberar a las entidades es una muy buena idea. Si fuera un objeto pesado, estaría más inclinado a mantenerlo así no tendría que recrearlo. – tvanfosson
@tvanfosson eso es lo que quise decir; editado para aclarar ese punto. El DC puede llevar mucho peso con él; es mejor deshacerse de él lo más rápido posible. –
Argumentos contra la eliminación: http://stephenwalther.com/blog/archive/2008/08/20/asp-net-mvc-tip-34-dispose-of-your-datacontext-or-don-t.aspx –