Tutoriales informáticos ¿Cómo crear un sitio Web? Aprende a dominar Wordpress Incrementa tu visibilidad (SEO) Servicios de alojamiento web Entity Framework - Premier exemple Entity Framework: primer ejemplo
HébergementWebs.com : L'actualités, guides et tutoriaux du moment
Nuestros servicios
SEO
Wordpress
Sitio Web
Tutoriales
Entity Framework: primer ejemplo Entity Framework - Premier exemple

Entity Framework: primer ejemplo

Tutorial de Entity Framework
2020-11-20 04:38:27

Entity Framework - Primer ejemplo


Definamos un modelo muy simple usando classs. Simplemente los definimos en el archivo Program.cs, pero en una aplicacion real

 Entity Framework - Primer ejemplo

Crear plantilla

Agregue las siguientes tres classs al archivo Program.cs usando el siguiente codigo para la class Student.

estudiante de class publica {ID publico int {get; juntos; } cadena publica Apellido {get; juntos; } cadena publica FirstMidName {get; juntos; } Public DateTime EnrollmentDate {get; juntos; } Inions virtuales publicos ICollection {get; juntos; }}

  • La propiedad ID se convertira en la columna de clave principal de la tabla de la base de data correspondiente acTu class.

  • La propiedad Enrollments es una propiedad de navegacion. Las propiedades de navegacion contienen otras entidades relacionadas con esta entidad.

  • En este caso, la propiedad Enrollments de una entidad Student contendra todas las entidades Enrollment asociadas con esa entidad Student.

  • Las propiedades de navegacion generalmente se configuran como virtuales para aprovechar ciertas caracteristicas de Entity Framework, como la carga diferida.

  • Si una propiedad de navegacion puede contener varias entidades (como en las relaciones de muchos a muchos o de uno a muchos), su tipo debe ser una lista en la que las entradas ser agregado, eliminado y actualizado, como ICollection.

Aqui esta la implementacion de la class del curso.

curso de class publica {public int CourseID {get; juntos; } titulo de cadena publica {get; juntos; }Creditos publicos int {obtener; juntos; } Public virtual ICollection Enrollm ents {get; juntos; }}

La propiedad Enrollments es una propiedad de navegacion. Una entidad del curso se puede asociar con cualquier numero de entidades de iniciacion.

Aqui esta la implementacion de la class inion y la enumeracion.

public enum Grade {A, B, C, D, F} Public class Inion {public int EnrollmentID {get; juntos; } public int CourseID {obtener; juntos; } public int StudentID {get; juntos; } ¿Nota publica? Grade {get; juntos; } Curso de curso virtual publico {get; juntos; } Estudiante estudiante virtual publico {get; juntos; }}

  • La propiedad EnrollmentID sera la clave principal.

  • La propiedad Grade es una enumeracion. El signo de interrogacion despues de la declaracion de tipo de calificacion indica que la propiedad de calificacion es anulable.

  • Una calificacion cero es diferente de una calificacion cero. Nulo sindica que una calificacion no se conoce o aun no se ha asignado.

  • Las propiedades StudentID y CourseID son claves externas y las propiedades de navegacion correspondientes son Student y Course.

  • Una entidad de iniciacion esta asociada con una entidad de estudiante y una entidad de curso, por lo que la propiedad solo puede contener una entidad de estudiante y curso.

Crear contexto de base de data

La class principal que coordina la funcionalidad de Entity Framework para un modelo de data dado es la class contexto de base de data que le permite consultar y guardar data. Puede crear esta class derivando de la class DbContext y exponiendo un DbSet escrito para cada class en nuestro modelo. Aqui esta la implementacion en la class MyContext, que se deriva de la class DbContext.

public class MyContext: DbContext {public virtual DbSet Cursos {obtener; juntos; } Inions public virtual DbSet {get; juntos; } Public virtual DbSet Students {get; juntos; }}

Aqui esta el codigo completo para el archivo Program.cs.

usando System.ComponentMod el.DataAnnotations.Schema; utilizando System.Data.Entity; utilizando System.Linq; usando System.Text; usando System.Threading.Tasks; espacio de nombres EFCodeFirstDemo {class Program {static void Main (string args) {}} public enum Grade {A, B, C, D, F} public class Enrollment {public int EnrollmentID {get; juntos; } public int CourseID {obtener; juntos; } public int StudentID {get; juntos; } ¿Nota publica? Grade {get; juntos; } Curso de curso virtual publico {get; juntos; } Estudiante estudiante virtual publico {get; juntos; }} Estudiante de class publica {public int ID {get; juntos; } cadena publica Apellido {get; juntos; } cadena publica FirstMidName {get; juntos; } Public DateTime EnrollmentDate {get; juntos; } Iniciar publicovirtual ICollection {get; juntos; }} curso de class publica {public int CourseID {obtener; juntos; } titulo de cadena publica {get; juntos; } Creditos publicos int {obtener; juntos; } Inions virtuales publicos ICollection {get; juntos; }} public class MyContext: DbContext {Curso virtual de DbSet public {get; juntos; } Inions public virtual DbSet {get; juntos; } Public virtual DbSet Students {get; juntos; }}}

El codigo anterior es todo lo que necesitamos para comenzar a almacenar y recuperar data. Agreguemos algunos data y luego los recuperemos. Aqui esta el codigo del metodo principal.

static void Main (string args) {using (var context = new MyContext ()) {// Cree y guarde una nueva Consola de estudiante. WriteLine ( "Add Nuevos estudiantes "); var student = new Student {FirstMidName = "Alain ", LastName = "Bomer ", EnrollmentDate = DateTime.Parse (DateTime.Today.ToString ())}; context.Students.Add (estudiante); var estudiante1 = nuevo estudiante {FirstMidName = "Mark ", LastName = "Upston ", EnrollmentDate = DateTime.Parse (DateTime.Today.ToString ())}; context.Students.Add (estudiante1); context.SaveChanges // muestra todos los estudiantes en la base de data var estudiantes = (de s en contexto. Los estudiantes ordenan por s.FirstMidName seleccione s) .ToList Console.WriteLine ( "Obtener todos los estudiantes de la base de data: "); foreach (var stdnt en estudiantes) {string name = stdnt.FirstMidName + "" + stdnt.LastName; Console.WriteLine ( "ID: {0}, nombre: {1} ", stdnt.ID, nombre); } Console.WriteLine ( "Presione cualquier tecla para salir ... "); Console.ReadKey }}

Cuando se ejecuta el codigo anterior, recibira el siguiente resultado.

Agregar nuevos estudiantes Obtenga todos los estudiantes de la base de data: ID: 1, Nombre: Alain BomerID: 2, Nombre: Mark Upston Presione cualquier tecla para salir ...

Ahora la pregunta que me viene a la mente es, ¿donde estan los data y la base de data? data donde agregamos algunos data y luego los extraemos de la base de data. Por convencion, DbContext ha creado una base de data para usted.

  • Si una instancia local de SQL Express esta disponible, Code First creo la base de data en esa instancia.

  • Si SQL Express no esta disponible, Code First intentara utilizar LocalDb.

  • La base de data recibe el nombre del nombre completo del contexto derivado.

En nuestro caso, la instancia de SQL Express esta disponible y el nombre de la base de data es EFCodeFirstDemo.MyContext como se muestra en la siguiente imagen.

 Entity Framework - Primer ejemplo

  • Estas son solo las convenciones predeterminadas y hay diferentes formas de cambiar labase de data utilizada por Code First.

  • Como puede ver en la imagen de arriba, ha creado tablas de Estudiantes, Cursos e Inions y cada tabla contiene columnas con el tipo de data y longitud apropiada.

  • Los nombres de las columnas y el tipo de data tambien corresponden a las propiedades de las respectivas classs de dominio.

Inicializando la base de data

En el ejemplo anterior, vimos que Code First crea una base de data automaticamente, pero si desea cambiar el nombre de la base de data y el nombre del servidor, veamos como Code First decide el nombre de la base de data y el nombre del servidor al inicializar una base de data. Eche un vistazo al siguiente diagrama.

Entity Framework - Primer ejemplo

Puede definir el constructor base de la class de contexto de la siguiente manera.

  • Sin parametros
  • Nombre de la base de data
  • Nombre de la ccadena de conexion

Sin parametros

Si especifica el constructor base de la class de contexto sin ningun parametro, como se muestra en el ejemplo anterior, entonces el Entity Framework creara una base de data en su servidor SQLEXPRESS local con un nombre {Espacio de nombres}. {Nombre de la class de contexto}.

En el ejemplo anterior, la base de data que se crea automaticamente tiene el nombre EFCodeFirstDemo .MyContext. Si observa el nombre, encontrara que EFCodeFirstDemo es el espacio de nombres y MyContext es el nombre de la class de contexto como se muestra en el siguiente codigo.

public class MyContext: DbContext {public MyContext (): base () {} curso DbSet public virtual {get; juntos; } Inions public virtual DbSet {get; juntos; } Public virtual DbSet Students {get; juntos; }}

Nombre de la base de data

Si pasa el nombre de la base de data comocomo parametro en un constructor base de la class de contexto, entonces Code First creara automaticamente una base de data nuevamente, pero esta vez el nombre sera el que se paso como parametro en el constructor base en el servidor de base de data local SQLEXPRESS.

En el siguiente codigo, MyContextDB se especifica como parametro en el constructor base. Si ejecuta su aplicacion, la base de data con el nombre MyContextDB se creara en su servidor SQL local.

public class MyContext: DbContext {public MyContext (): base ( "MyContextDB ") {} Cursos publicos virtuales de DbSet {get; juntos; } Inions public virtual DbSet {get; juntos; } Public virtual DbSet Students {get; juntos; }}

Nombre de la cadena de conexion

Esta es una manera facil de decirle a DbContext que use un servidor de base de data que no sea SQL Express o LocalDb. Puedes optar por poner una ccadena de conexion en su archivo app.config.

  • Si el nombre de la cadena de conexion coincide con el nombre de su contexto (con o sin calificacion de espacio de nombres), entonces sera encontrado por DbContext cuando se use el parametro constructor menos.

  • Si el nombre de la cadena de conexion es diferente del nombre de su contexto, entonces puede decirle a DbContext que use esta conexion en el modo Code First pasando el nombre de la cadena de conexion al constructor DbContext.

public class MyContext: DbContext {public MyContext (): base ( "name = MyContextDB ") {} curso Virtual DbSet public {obtener; juntos; } Inions public virtual DbSet {get; juntos; } Estudiantes public virtual DbSet {get; juntos; }}

  • En el codigo anterior, un fragmento de cadena de conexion de class de contexto se especifica como parametroen el constructor base.

  • El nombre de la cadena de conexion debe comenzar con "nombre = ", de lo contrario lo considerara un nombre de base de data.

  • Este formulario hace explicito que esperaria que la cadena de conexion se encontrara en su archivo de configuracion. Se lanzara una excepcion si no se encuentra una cadena de conexion con el nombre dado.

  • El nombre de la base de data en la cadena de conexion en app.config es EFMyContextDB . CodeFirst creara una nueva base de data EFMyContextDB o utilizara la base de data EFMyContextDB existente en SQL Server local.

Clases de dominio

Hasta ahora, hemos dejado que EF descubra el modelo usando sus convenciones predeterminadas, pero habra ocasiones en las que nuestras classs no seguiran las convenciones y tendremos que ser capaces de realizar configuracion adicional. Pero puede anular estas convenciones configurando sus classs de dominio para proporcionar a EF la informacion que necesita. Hay dos opciones para configurar sus classs de dominio:

  • Anotaciones de data
  • API Fluent

Anotaciones de data

Las anotaciones de data se utilizan para configurar sus classs que resaltaran las configuraciones mas comunmente necesarias. Las anotaciones de data tambien son entendidas por una serie de aplicaciones .NET, como ASP.NET MVC, que permiten que estas aplicaciones aprovechen las mismas anotaciones para las validaciones del lado del cliente.

Aqui estan las anotaciones de data utilizadas en la class deestudiante.

Public class Enrollment {[Key] public int EnrollmentID {get; juntos; } public int CourseID {obtener; juntos; } public int StudentID {get; juntos; } ¿Nota publica? Grade {get; juntos; } [ForeignKey ( "CourseID ")] Curso virtual publico Curso {get; juntos; } [ForeignKey ( "ID ")] Estudiante estudiante publico virtual {get; juntos; }}

API fluida

La mayoria de las configuraciones del modelo se pueden realizar utilizando anotaciones de data simples. La API Fluent es una forma avanzada de especificar la configuracion del modelo que cubre todo lo que pueden hacer las anotaciones de data, ademas de una configuracion mas avanzada que no se puede hacer con las anotaciones de data. Las anotaciones de data y la API fluida se pueden usar juntas.

Para acceder a la API fluida, anula el metodo OnModelCreating en DbContext. Ahora cambiemos el nombre de la columna en la tabla Student de FirstMidName a FirstName como se muestra en el siguiente codigo.

public class MyContext: DbContext {anulacion protegida void OnModelCreating (DbModelBuilder modelBuilder) {modelBuilder.Entity () .Property (s ⇒ s.FirstMidName) .HasColumnName ( "Nombre de pila "); } Cursos publicos virtuales de DbSet {get; juntos; } Inions public virtual DbSet {get; juntos; } Public virtual DbSet Students {get; juntos; }}

Entity Framework: procedimientos almacenados

Entity Framework: procedimientos almacenados

  • 2020-11-20 04:41:29 | Tutorial de Entit...

Entity Framework: procedimientos almacenadosEntity Framework le permite utilizar procedimientos almacenados en el modelo de datos de entidad en lugar de, o en combinación con, su generación automática de comandos. Puede utilizar procedimientos almacenados para ejecutar lógica predefinida en tablas d...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework - Entidades desconectadas

Entity Framework - Entidades desconectadas

  • 2020-11-20 04:41:05 | Tutorial de Entit...

Entity Framework - Entidades desconectadasEn este capítulo, veamos cómo realizar cambios en entidades que no van seguidas de un contexto. Las entidades que no van seguidas de un contexto se denominan entidades "desconectadas". Para la mayoría de las aplicaciones de un solo nivel, donde la interfaz d...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: función de tabla

Entity Framework: función de tabla

  • 2020-11-20 04:40:50 | Tutorial de Entit...

Entity Framework: función con valores de tablaEn este capítulo, aprendamos cómo mapear funciones con valores de tabla (TVF) usando Entity Framework Designer y cómo llamar a un TVF desde una consulta LINQ. Actualmente, los TVF solo se admiten en el flujo de trabajo Database First. Se introdujo por pr...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: compatibilidad con la enumeración

Entity Framework: compatibilidad con la enumeración

  • 2020-11-20 04:40:25 | Tutorial de Entit...

Entity Framework: compatibilidad con EnumEn Entity Framework, esta funcionalidad le permitirá definir una propiedad en una clase de dominio que es un tipo de enumeración y asignarla a una columna de base de datos de un tipo entero. Entity Framework luego convertirá el valor de la base de datos hacia...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: tipo de datos espaciales

Entity Framework: tipo de datos espaciales

  • 2020-11-20 04:39:57 | Tutorial de Entit...

Entity Framework: tipo de datos espacialesEl soporte para tipos espaciales se introdujo en Entity Framework 5. También se incluye un conjunto de operadores para permitir que las consultas analicen datos espaciales. Por ejemplo, una consulta puede filtrar en función de la distancia entre dos ubicacio...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework - Herencia

Entity Framework - Herencia

  • 2020-11-20 04:39:42 | Tutorial de Entit...

Entity Framework - HerenciaLa herencia permite crear modelos complejos que reflejan mejor la forma de pensar de los desarrolladores y también reduce el trabajo requerido para interactuar con esos modelos. La herencia usada con entidades tiene el mismo propósito que la herencia usada con clases, por ...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: entidades coloreadas

Entity Framework: entidades coloreadas

  • 2020-11-20 04:38:45 | Tutorial de Entit...

Entity Framework: entidades coloreadasEn Entity Framework, Colored Entity se trata principalmente de cambiar el color de la entidad en el diseñador para que sea fácil para los desarrolladores identificar los grupos de entidades relacionados en el diseñador de Visual Studio. Esta funcionalidad se int...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: anotaciones de datos

Entity Framework: anotaciones de datos

  • 2020-11-20 04:38:03 | Tutorial de Entit...

Entity Framework: anotaciones de datosDataAnnotations se usa para configurar clases que resaltarán las configuraciones más comúnmente necesarias. Varias aplicaciones . NET también entienden las anotaciones de datos, como ASP. NET MVC, que permite que estas aplicaciones aprovechen las mismas anotacio...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework - API fluida

Entity Framework - API fluida

  • 2020-11-20 04:37:21 | Tutorial de Entit...

Entity Framework - API fluidaLa API Fluent es una forma avanzada de especificar la configuración del modelo que cubre todo lo que las anotaciones de datos pueden agregar a una configuración más avanzada que no es posible con las anotaciones de datos. Las anotaciones de datos y la API fluida se puede...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework - Base de datos básica

Entity Framework - Base de datos básica

  • 2020-11-20 04:36:40 | Tutorial de Entit...

Entity Framework: base de datos inicialEn Entity Framework, Seed se introdujo en EF 4.1 y funciona con inicializadores de base de datos. La idea general de un método de inicialización es inicializar datos en una base de datos creada por Code First o desarrollada por migraciones. Estos datos a menudo...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: varios DbContext

Entity Framework: varios DbContext

  • 2020-11-20 04:36:23 | Tutorial de Entit...

Entity Framework: varios DbContextEn este capítulo, aprenderemos cómo migrar cambios a la base de datos cuando hay varias clases DbContext en la aplicación. Varios DbContext se introdujeron por primera vez en Entity Framework 6.0. Varias clases de contexto pueden pertenecer a una sola base de datos ...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: tipos de entidad anidados

Entity Framework: tipos de entidad anidados

  • 2020-11-20 04:36:08 | Tutorial de Entit...

Entity Framework: tipos de entidad anidadosAntes de Entity Framework 6, Entity Framework no reconocía entidades anidadas o tipos complejos dentro de otras entidades o tipos complejos. Cuando Entity Framework generó el modelo, los tipos anidados simplemente desaparecieron. Echemos un vistazo a un eje...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework - Guía rápida

Entity Framework - Guía rápida

  • 2020-11-20 04:35:52 | Tutorial de Entit...

Entity Framework - Guía rápidaEntity Framework: descripción general¿Qué es Entity Framework? Entity Framework se lanzó por primera vez en 2008, el principal medio de interacción de Microsoft entre las aplicaciones . NET y las bases de datos relacionales. Entity Framework es un Object Relational Mapp...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: descripción general

Entity Framework: descripción general

  • 2020-11-20 04:21:43 | Tutorial de Entit...

Entity Framework: descripción general¿Cuál es el marco de la entidad? Entity Framework se lanzó por primera vez en 2008, el principal medio de interacción de Microsoft entre las aplicaciones . NET y las bases de datos relacionales. Entity Framework es un Object Relational Mapper (ORM) que es un tipo...

  • facebook
  • twitter
  • xing
  • linkedin
Entity Framework: configuración del entorno

Entity Framework: configuración del entorno

  • 2020-11-20 04:21:19 | Tutorial de Entit...

Entity Framework: configuración del entorno¿Qué hay de nuevo en Entity Framework 6? Framework tiene una API compleja que le permite tener un control granular sobre todo, desde su modelado hasta su comportamiento en tiempo de ejecución. Parte de Entity Framework 5 vive dentro de . NET. Y otra parte e...

  • facebook
  • twitter
  • xing
  • linkedin