Моя ситуация
У меня есть сущностная модель с базовым классом ItemBase, который определяет идентификатор, имя и несколько других свойств. Столбец «ID» - это идентификатор, столбец «Имя» - это уникальное поле в базовой таблице . Этот базовый класс также определяется как абстрактный класс. Так что да, это таблица в базе данных, но в EF4 я не могу создавать экземпляры этого базового класса.
И у меня есть пять разных сущностей, которые наследуются от базового класса. (Item1, Item2 ... Item5) Таким образом, все они наследуют свойства ItemBase, а дополнительные свойства хранятся в альтернативной таблице. Одна таблица для каждого типа. Довольно мило, на самом деле!
Моя проблема
Объект типа Item2 может иметь то же имя, что и объект Item5. Это может вызвать проблемы, так как они оба будут иметь запись в таблице ItemBase, а поле Имя будет конфликтовать. Это просто противно. Таким образом, если класс Item2 содержит бренды производителей телевизоров, а Item5 содержит списки производителей смартфонов, «Samsung» нельзя добавить в оба набора объектов.
Мне нужно решение, которое обойдет эту проблему, оставляя ее простой. (И без добавления поля Name во все дочерние таблицы, потому что YUCK!) Предложения?
Как решить эту проблему?
Поскольку «Имя» находится в базовой таблице и определено как «Уникальное», я столкнусь с конфликтами, когда два разных класса сущностей имеют одно и то же имя. Мне нужно решение, где «Имя» находится в базовой таблице, но оно уникально только для дочернего класса, а не уникально для базового класса ...
Я мог бы изменить дочерние объекты, добавив префикс к имени при записи в таблицу и снова удалив его при чтении из таблицы. Или я добавляю другое поле в базовую таблицу, указывающее связанный с ним дочерний класс, и делаю «имя» + «ссылка» уникальным вместо просто «Имя». Оба решения не очень красивые, и мне неясно, как реализовать одно из них. Так есть ли лучшее решение или как мне это реализовать?