这是基于我的假设,即采用以下类型的对象:
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; }
}
...并从中创建一个类型的对象:
public class BasicFruit : IBasicFruit
{
public string name { get; set; }
public string color { get; set; }
}
...被称为“投影”或“类型投影”(该投影不仅适用于匿名类型)。
现在,假设我BasicFruit
从服务器发送一个序列化到我的客户端应用程序,在这两个字符串上执行一些高度复杂的农场逻辑,然后它被发送回服务器,ORM 不知道BasicFruit
类型,只有的Fruit
实体类型。Fruit
如果我根据我的对象创建一个新对象BasicFruit
(忽略 中不存在的属性BasicFruit
),那么我的 ORM 可以持久保存它,这与 projection 是相反的,因为我要从子集到超集,或者它仍然被认为是投影,或者这只是映射?
投影可以被认为是一种映射形式吗?