Это мой первый пост о переполнении стека! (Яй!)
У меня проблемы с отображением Castle ActiveRecord, которое, как мне показалось, будет довольно распространенным сценарием, но, возможно, я не "правильно" настроил Google.
У меня есть один объект под названием «Продукт», а другой - «Гарантия». Продукт имеет два свойства (среди прочих), каждый из которых имеет тип Гарантия. Таким образом, модель выглядит примерно так (атрибуты и другие свойства опущены):
public class Product
{
...
public Warranty StandardWarranty { get; set; }
public Warranty ExtendedWarranty { get; set; }
}
public class Warranty
{
...
public Product Product { get; set; }
}
Сначала я подумал, что мне нужно сделать гарантию базовым классом, а затем создать два конкретных класса, StandardWarranty и ExtendedWarranty, но эти классы не расходятся ни с каким видом данных или поведением, поэтому при использовании единого наследования таблиц с колонка дискриминатора казалась излишней и слишком сложной.
Самым близким, что я мог бы придумать в документации ActiveRecord, было бы использование атрибута «Любой». Но документация, похоже, намекала на то, что ее следует использовать в сценариях, где полиморфное поведение связано с отдельными конкретными классами. Но я хотел бы посоветоваться с сообществом, прежде чем начать сворачивать эту кроличью нору.
Возможно, я должен просто использовать вместо этого отношения один ко многим? Один продукт имеет много гарантий? Но класс продукта будет иметь не более 2 и не менее 0, так что это все равно кажется неправильным.
Любой вклад будет полезен!
Спасибо,
Мэтт