Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

83
Visualizações
Entity Framework Core genera una nueva columna al seleccionar de las tablas secundarias de una Vista

Tengo una tabla en mi base de datos Cliente y tengo una tabla de base de datos externa Cliente con mucha información, creé una vista de Cuenta de cliente para representar esto

Ver - CuentaCliente

 CREATE VIEW CustomerAccount AS SELECT c.Id, c.CustomerNumber, a.Name, ISNULL(DateTimeCreated, 0) as CreatedDate, ISNULL(DateTimeUpdated, ISNULL(DateTimeCreated, 0)) as UpdatedDate, ~InactiveFlag as Active FROM externaldatabase..CMAccount a INNER JOIN mydatabase..Customer c on a.URI = c.CustomerNumber;

Mi mesa - Cliente

 CREATE TABLE [dbo].[Customer]( [Id] [int] IDENTITY(1,1) NOT NULL, [CustomerNumber] [int] NOT NULL, [CreatedDate] [datetime] NOT NULL, [UpdatedDate] [datetime] NOT NULL, [Active] [bit] NOT NULL, CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO

Las tablas Product1 y Product2 tienen claves foráneas para la tabla Customer de mi base de datos

Configuración para la tabla Producto1

 public void Configure(EntityTypeBuilder<Product1> builder) { builder .HasKey(b => b.Id); // all other properties builder .HasOne(b => b.Customer) .WithMany(); }

Configuración para la tabla Product2

 public void Configure(EntityTypeBuilder<Product2> builder) { builder .HasKey(b => b.Id); // all other properties builder .HasOne(b => b.Customer) .WithMany(); }

Configuración para la mesa Cliente:

 public void Configure(EntityTypeBuilder<Customer> builder) { builder .HasKey(b => b.Id); builder .HasIndex(b => b.CustomerNumber); builder .Property(b => b.CustomerNumber) .IsRequired(); builder .Property(b => b.CreatedDate) .HasColumnType("datetime") .IsRequired(); builder .Property(b => b.UpdatedDate) .HasColumnType("datetime") .IsRequired(); builder .Property(b => b.Active) .IsRequired(); }

Configuración para la vista CustomerAccount:

 public void Configure(EntityTypeBuilder<CustomerAccount> builder) { builder .ToView(nameof(CustomerAccount)); builder .HasMany(c => c.Product1Setups) .WithOne() .HasForeignKey(p1 => p1.CustomerId); builder .HasMany(c => c.Product2Setups) .WithOne() .HasForeignKey(p2 => p2.CustomerId); }

Incluso si uso la sobrecarga de cadenas como se muestra a continuación, sucede lo mismo:

 builder .HasMany(c => c.Product2Setups) .WithOne() .HasForeignKey("CustomerId");

Esperaba solo una relación lógica entre ellos, pero al seleccionar Product1 o Product2 EF core genera una consulta con un nombre de columna no válido CustomerId1 . Ambas tablas ya son una columna denominada CustomerId a la que hace referencia mydatabase..Customer del ejemplo anterior.

¿Hay alguna solución para eso?

ACTUALIZACIÓN - TL/DR:

En resumen, lo que debo hacer es tener dos objetos principales, una tabla y una vista a las que hagan referencia las mismas columnas en las tablas secundarias, ya que la vista comparte básicamente la misma clave única.

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda