24

Antes de que esto se marque como un duplicado, he comprobado las otras publicaciones relacionadas y no responden a mi pregunta.asignación de varias tablas a una única clase de entidad en el marco de la entidad

Estoy trabajando en una base de datos heredada que tiene 2 tablas que tienen una relación 1: 1. Actualmente, tengo un tipo (1Test: 1Result) para cada una de estas tablas definidas Me gustaría fusionar estas tablas particulares en una sola clase.

Los tipos actuales son parecidos a este

public class Result 
{ 
    public   string  Id     { get; set; } 
    public   string  Name    { get; set; } 
    public   string  Text    { get; set; } 
    public   string  Units    { get; set; } 
    public   bool  OutOfRange   { get; set; } 
    public   string  Status    { get; set; } 
    public   string  Minimum    { get; set; } 
    public   string  Maximum    { get; set; } 

    public virtual Instrument InstrumentUsed  { get; set; } 

    public virtual Test  ForTest    { get; set; } 
} 


public class Test 
{ 
    public   int  Id   { get; set; } 
    public   string Status  { get; set; } 
    public   string Analysis  { get; set; } 
    public   string ComponentList { get; set; } 
    public virtual Sample ForSample  { get; set; } 
    public virtual Result TestResult { get; set; } 
} 

yo preferiría a tener este aspecto

public class TestResult 
{ 
    public   int  Id    { get; set; } 
    public   string  Status   { get; set; } 
    public   string  Analysis  { get; set; } 
    public   string  ComponentList { get; set; } 
    public   string  TestName  { get; set; } 
    public   string  Text   { get; set; } 
    public   string  Units   { get; set; } 
    public   bool  OutOfRange  { get; set; } 
    public   string  Status   { get; set; } 
    public   string  Minimum   { get; set; } 
    public   string  Maximum   { get; set; } 

    public virtual Instrument InstrumentUsed { get; set; } 
} 

Actualmente estoy usando la API de fluidez para el mapeo de estos a nuestra base de datos Oracle legado.

¿Cuál sería el mejor método para combinarlos en una sola clase? Tenga en cuenta que esta es una base de datos heredada. Cambiar las tablas no es una opción y la creación de vistas no es una solución viable en este punto del proyecto.

Respuesta

31

Puede usar Entidificación de entidades para lograr esto si tiene la misma clave principal en ambas tablas.

modelBuilder.Entity<TestResult>() 
    .Map(m => 
     { 
     m.Properties(t => new { t.Name, t.Text, t.Units /*other props*/ }); 
     m.ToTable("Result"); 
     }) 
    .Map(m => 
     { 
     m.Properties(t => new { t.Status, t.Analysis /*other props*/}); 
     m.ToTable("Test"); 
     }); 

He aquí una útil article

+1

tienen la misma clave por lo que este debe trabajar en el caso que aún no ha ¿seguiría siendo posible gracias a la relación de correspondencia por separado o es que no está disponible en esta versión del marco todavía ? –

+0

¿Cómo asignarías el instrumento? – roland

Cuestiones relacionadas