EF 4.1
У меня есть Product Table, продукт может быть разных типов, например, скажем, Shirt and Pants. Я считаю, что это называется SuperType и SubType
Продукты (1..1: 0) ProductShirt
Товары (1..1: 0) ProductPants
, например
Products
--------
ProductId (PK)
Product Name
Product Type (1 or 2, let's say 1 is Shirt, 2 is Pants)
ProductShirtType
----------------
ProductId (PK, FK)
HasShortSleeves
etc....
ProductPantsType
----------------
ProductId (PK, FK)
IsCargoPants
etc...
Я пытаюсь смоделировать это в EF CF, и таблица для каждого типа (TPT) соответствует этим требованиям. Проблема, с которой я сталкиваюсь, заключается в том, что пользователь может менять типы продуктов, и, согласно ответу Ладислава Мрнки, это невозможно, и вместо этого следует отдать предпочтение композиции:
Модель Entity Framework с наследованием таблиц для типов
Что здорово, теперь мои модели выглядят так:
public class Product {
public int Id { get; set; }
public string Name { get; set; }
public int ProductType { get; set; }
public virtual ProductSubType SubType {get; set;}
}
public abstract class ProductSubType {
public int Id { get; set; }
public virtual Product Product {get; set;}
}
public class ProductShirt : ProductSubType {
public bool HasShortSleeves { get; set; }
}
public class ProductPants : ProductSubType {
public bool IsCargoPants { get; set; }
}
Я не знаю, как отобразить абстрактный тип и подтипы. И так же важно, как я могу переходить с одного типа продукта на другой.