Хорошо, очевидно, я сражаюсь .net здесь ... и ответ, вероятно, заключается в том, что я лаяю неправильное дерево и должен просто заниматься только тем, что использовал дизайн базы данных, я бы 5 лет тому назад.Entity Framework: множественное наследование
Я хочу иметь абстрактный объект Клиент и иметь 2 унаследованных объекта Поставщик и клиент.
Отношения между клиентом и поставщиком как и клиент 1: 0/1
Это, вероятно, означает, что решение, основанное на наследство будет работать хорошо, как это позволило бы мне писать меньше кода проверки, а также рычаг строго типизированные коллекции.
Однако из рамки сущности объекта настаивает на использовании уникального идентификатора в таблице клиентов и отказе предоставить вам тот же идентификатор, что и ссылки из таблиц Заказчика и поставщика.
Когда вы заходите в базу данных и вручную изменяете этот идентификатор, чтобы быть одинаковым на обоих наследуемых объектах, вы получаете проблемы, потому что у коллекции клиентов есть столкновение индексов (неудивительно).
В результате я не могу иметь клиента, который появляется как поставщик и клиент (я был доволен идеей 2 отдельных объектов, имеющих один и тот же идентификатор).
Это приводит к разработке вопроса о том, как наилучшим образом смоделировать этот сценарий ... Я рискую сделать условное объединение и логические поля для «isCustomer», «isSupplier» или таблицы поставщиков и клиентов, которая объединяет к клиенту и писать код для поддержания отношения 0-1 с ним.
У кого-то еще должно быть такого рода проблемы? Нет элегантных решений?
a alternative: Мне нужно несколько видов одного и того же объекта. Это означает, что я не могу просто иметь целочисленное значение в одном поле, определяющее, какие представления разрешены. Мне нужно использовать несколько полей bool, чтобы определить, какие виды объектов разрешены.
Возможно ли это в EF? Очевидно, что я могу создавать представления в БД, но вместо этого я делаю это из EF и создаю SQL. (хотя я уже определяю sp для настройки различных ключей и ограничений в db, но это означает, что я все больше и больше предпочитаю отказаться от использования EF для генерации моей схемы)
idd, к сожалению, это заключение, к которому я прихожу ... это самый простой, с которым я пришел. По крайней мере ORM управляет 1: 0/1. Просто показывает, что старый адъютант предпочитает ассоциировать над наследованием еще раз правила (до сих пор) –