Pregunta ¿Cuál es la diferencia entre un "Modelo" y un "Contexto" en la jerga de Entity Framework?


¿Cuál es la diferencia entre un "modelo" y un "contexto" en la jerga de Entity Framework?

Estoy utilizando el primer enfoque de la base de datos de Entity Framework en una aplicación. Estos términos han surgido muchas veces ya que he estado leyendo diferentes foros y artículos sobre estrategias de implementación de EF. Parece que no puedo entender cómo estos dos son diferentes (ni siquiera con solo el marco de entidad, pero con el desarrollo de software en general). La gente usa las palabras como si fueran diferentes, pero algunas personas parecen usar las palabras indistintamente.


14
2017-09-05 17:13


origen


Respuestas:


Contexto

Esto es facil. El contexto es el DbContext o el más viejo ObjectContext clase que es el núcleo de la capa de acceso a datos del marco de entidad. Proporciona acceso transparente a la base de datos a través de fuertes conjuntos de entidades tipadas, rastrea y guarda cambios, administra las transacciones y conexiones de la base de datos, y contiene una serie de métodos de utilidad para facilitar todo tipo de tareas de acceso a datos (esp. DbContext)

Modelo

Esto puede ser dos (o tres) cosas.

  • El modelo de datos, o modelo de tienda. ¿Cuál es el modelo relacional de la base de datos subyacente a la capa de acceso a datos EF?
  • El modelo conceptual, o modelo de clase. ¿Cuál es el modelo de clase .Net que representa la base de datos? Este modelo puede ser generado por EF (primero por la base de datos) o puede ser un modelo de clase existente (primero el código). El modelo conceptual y el modelo de tienda están vinculados a través de cartografía, por lo que EF sabe cómo llenar las clases .Net a partir de los registros de la base de datos y, a la inversa, cómo guardar las clases .Net en la base de datos.
  • Algunas personas se refieren a las clases en el modelo conceptual como "modelos". Esto no está mal, pero prefiero usar el nombre entidades para esto.

Asi que contexto y modelo son dos cosas bastante diferentes Se podría decir que el contexto es el intermediario entre dos tipos diferentes de modelos.


9
2017-09-05 20:15



En términos generales, un contexto se refiere a una conexión de base de datos o sesión donde el modelo es la asignación entre tablas, vistas, etc. a clases de objetos de acceso a datos (es decir, objetos que contendrán los datos)


3
2017-09-05 17:17



Un modelo es una clase que normalmente representa una tabla o estructura de base de datos para mostrar una tabla de base de datos. Por ejemplo, si tuviera una base de datos para automóviles, entonces podría ser un modelo para automóvil

public class Car
{
 [Key]
 public int CarId { get; set; }
 public string Make { get; set; }
 public string Model { get; set; }
 public int Year { get; set; } 
}

Este modelo es utilizado por el marco de la entidad y el proveedor de sql (para mysql o mssql por lo general) para componer una consulta en una base de datos. La consulta requiere una forma de mapear esto, y ese es el trabajo del contexto. El contexto generalmente se extiende DbContext y es lo que se usa para la fachada de acceder a la tabla de la base de datos como un objeto de memoria.

public class CarContext : DbContext
{
 DbSet<Car> Cars { get; set; }
}

1
2017-09-05 17:17



Consulte el enlace a continuación para comprender mejor la diferencia entre dos:

https://www.dotnettricks.com/learn/linq/ienumerable-vs-iqueryable

Si su necesidad es solo leer hacia adelante que usar IEnumerable para obtener más funciones, use IQueryable


-1
2018-06-12 19:56