¿Hay un DataContext en LINQ-to-Entities (NO Linq-to-SQL)?
-
02-07-2019 - |
Pregunta
Hace poco hice una pregunta sobre el rastreo de Linq-to-Entities
Creo que una de las respuestas no fue correcta, ya que Consulte el uso del DataContext. ¿Hay un DataContext para LINQ-to-Entities? Si es así, ¿cómo lo consigo?
Solución
LINQ to Entities usa ObjectContext, no DataContext.
Aquí hay una breve descripción de EF:
LINQ to Entities, el ObjectContext Clase y el modelo de datos de la entidad
Las consultasLINQ to Entities utilizan la Infraestructura de servicios de objetos . los ObjectContext class es la clase principal para interactuar con un EDM como Objetos CLR. El desarrollador construye una instancia de ObjectQuery a través de ObjectContext. La clase genérica ObjectQuery representa una consulta que devuelve Una instancia o colección de entidades escritas. Objetos de entidad devueltos por ObjectQuery es seguido por Object Context y puede actualizarse usando el método SaveChanges.
Ni siquiera funciona de la misma manera que DataContext en LINQ to SQL. Si bien es cierto que ambos administran la conexión y siguen los cambios, también difieren en la forma en que modelan las estructuras de datos y las relaciones.
Sin embargo, le daría cierta libertad al cartel de esa respuesta incorrecta, porque LINQ to SQL hace referencia a "entidades", y alguien que no esté familiarizado con EF podría estar pensando que saben de lo que estás hablando.
Por ejemplo:
LINQ para SQL y la clase DataContext
El DataContext es la fuente de todas las entidades asignada sobre una base de datos conexión. hace un seguimiento de los cambios que realizó en todas las entidades recuperadas y mantiene un " caché de identidad " Eso garantiza que las entidades recuperadas. más de una vez se representan utilizando la misma instancia de objeto .
Puede ser confuso.
Otros consejos
Al parecer, LinqToEntities usa un ObjectContext en lugar de DataContext.
Es gracioso que el equipo de objetos haya creado un DataContext y que el equipo de datos haya creado un ObjectContext (y luego en DataQuery vs ObjectQuery, etc.) "¡Nombrar es difícil! "
Actualización, para .net 4 con EF4.1, también podría estar interesado en DbContext cuando se trabaja con LinqToEntities. Consulte también .
Creo que podría estar refiriéndose al Modelo de Datos de Entidad de ADO.NET (archivo .edmx - comparable a un archivo .dbml).
En VS se ve en Agregar elemento- > Modelo de datos de entidad ADO.NET
Hay un lote de estas diferencias de sintaxis arbitrarias. P.ej. SubmitChanges (L2S) y SaveChanges (L2E). Sin embargo, eso sería solo la punta de las diferencias entre las dos tecnologías.