cómo usar vistas en el primer marco de entidad de código

¿Cómo puedo usar la vista de la base de datos en el código del marco de la entidad primero,

Si, como yo, solo le interesa mapear entidades provenientes de otra base de datos (una erp en mi caso) para relacionarlas con entidades específicas de su aplicación, entonces puede usar las vistas a medida que usa una tabla (mapee la vista en de la misma manera!). Obviamente, si intenta actualizar esas entidades, obtendrá una excepción si la vista no es actualizable. El procedimiento es el mismo que en el caso de entidades normales (basadas en una tabla):

  1. Crea una clase POCO para la vista; por ejemplo FooView
  2. Agregue la propiedad DbSet en la clase DbContext
  3. Use un archivo FooViewConfiguration para establecer un nombre diferente para la vista (usando ToTable (“Foo”), en el constructor) o para establecer propiedades particulares

    public class FooViewConfiguration : EntityTypeConfiguration { public FooViewConfiguration() { this.HasKey(t => t.Id); this.ToTable("myView"); } } 
  4. Agregue el archivo FooViewConfiguration a modelBuilder, por ejemplo, sobre el método OnModelCreating del contexto:

     protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new FooViewConfiguration ()); } 

Si todo lo que quiere es un conjunto de objetos des-normalizados, entonces puede que simplemente haya creado una propiedad pública IQueryable obtener solo en su clase DbContext .

En el resultado, devuelve un resultado de Linq para proyectar los valores desnormoalizados en sus objetos desnormalizados. Esto podría ser mejor que escribir una vista de base de datos porque está progtwigndo, no está limitado al solo usar declaraciones de select . También es seguro el tipo de tiempo de comstackción.

Solo tenga cuidado de no desencadenar enumeraciones como llamadas ToList() , que romperán la consulta diferida y puede terminar obteniendo un millón de registros de la base de datos y filtrándolos en su servidor de aplicaciones.

No sé si esta es la manera correcta, pero lo intenté y me funciona.

Esta puede ser una actualización, pero para usar las vistas con el Código EF, primero simplemente agregue [Table (“NameOfView”)] a la parte superior de la clase y todo debería funcionar correctamente sin tener que pasar por todos los aros que todos los demás están pasando. También deberá informar una de las columnas como una columna [clave]. Aquí está mi código de ejemplo a continuación para implementarlo.

 using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace SomeProject.Data { [Table("SomeView")] public class SomeView { [Key] public int NameID { get; set; } public string Name { get; set; } } } 

Y aquí es cómo se ve el contexto

 using System.Data.Entity; namespace SomeProject.Data { public class DatabaseContext : DbContext { public DbSet SomeViews { get; set; } } }