Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

81
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!