EF 4.1
У меня есть Таблица продуктов, продукт может быть разных типов, например, рубашка и брюки. Я считаю, что это называется SuperType и SubType
Товары (1..1:0)
Товары (1..1:0)
e.g.
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; }
}
Я не понимаю, как сопоставить абстрактный тип и подтипы. И не менее важно, как я перехожу с одного типа продукта на другой.