Esto se basa en mi suposición de que la toma de un objeto de tipo:¿La proyección de tipo tiene un opuesto, o sigue siendo una proyección (o solo un mapeo)?
public class Fruit : IBasicFruit, IFruitDetails
{
// IBasicFruit implementation
public string name { get; set; }
public string color { get; set; }
// IFruitDetails implementation
public string scientific_name { get; set; }
public bool often_mistaken_for_vegetable { get; set; }
public float average_grams { get; set; }
public int century_domesticated { get; set; }
}
... y de ella se crea un objeto de tipo:
public class BasicFruit : IBasicFruit
{
public string name { get; set; }
public string color { get; set; }
}
... que se conoce como "proyección" , o "tipo proyección" (esa proyección se aplica no solo a tipos anónimos).
Ahora, digamos que envío un serial BasicFruit
desde un servidor a mi aplicación cliente, donde se realiza una lógica de granja altamente sofisticada en esas dos cadenas, y luego se envía de vuelta al servidor, donde el ORM no está al tanto del tipo BasicFruit
, solo del tipo de entidad Fruit
. Si creo un nuevo objeto Fruit
basado en mi objeto BasicFruit
(ignorando las propiedades que no existen en BasicFruit
), entonces mi ORM puede persistir, es lo contrario de la proyección, porque voy de un subconjunto a un superconjunto, o ¿Todavía se considera proyección, o es solo un mapeo?
¿Se podría considerar la proyección como una forma de mapeo?
¡Excelente, respuesta clara explicada! – Jay