como usar modos de exibição na estrutura da primeira entidade de código

Como posso usar a exibição do database no código da estrutura da entidade primeiro,

Se, como eu, você estiver interessado apenas no mapeamento de entidade proveniente de outro database (um ERP no meu caso) para relacioná-los a entidades específicas do seu aplicativo, você poderá usar os modos de exibição ao usar uma tabela o mesmo caminho!). Obviamente, se você tentar atualizar essas entidades, receberá uma exceção se a exibição não for atualizável. O procedimento é o mesmo que no caso de entidades normais (baseadas em uma tabela):

  1. Crie uma class POCO para a exibição; por exemplo FooView
  2. Adicione a propriedade DbSet na class DbContext
  3. Use um arquivo FooViewConfiguration para definir um nome diferente para a visualização (usando ToTable (“Foo”); no construtor) ou para definir propriedades específicas

    public class FooViewConfiguration : EntityTypeConfiguration { public FooViewConfiguration() { this.HasKey(t => t.Id); this.ToTable("myView"); } } 
  4. Adicione o arquivo FooViewConfiguration ao modelBuilder, por exemplo, verificando o método OnModelCreating do contexto:

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

Se tudo o que você quer é um monte de objects desnormalizados, você pode simplesmente criar uma propriedade IQueryable get-only pública em sua class IQueryable .

No get você retorna um resultado Linq para projetar os valores não-normoalizados em seus objects desnormalizados. Isso pode ser melhor do que gravar uma Visualização do BD porque você está programando, você não está limitado ao usar somente instruções select . Também é o tipo de tempo de compilation seguro.

Apenas ToList() cuidado para não acionar enumerações como as chamadas ToList() , que quebrarão a consulta adiada e você poderá acabar obtendo um milhão de registros do database e filtrá-los em seu servidor de aplicativos.

Não sei se este é o caminho certo, mas eu tentei e funciona para mim.

Isso pode ser uma atualização, mas para usar views com o código EF, simplesmente adicione [Table (“NameOfView”)] ao topo da class e tudo deve funcionar direito sem ter que passar por todos os aros que todo mundo está passando. Além disso, você terá que relatar uma das colunas como uma coluna [chave]. Aqui está o meu código de exemplo abaixo para implementá-lo.

 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; } } } 

E aqui está o que o contexto parece

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