У меня есть устаревшая база данных с таблицей Address. Теперь две другие таблицы могут иметь адресную информацию, назначенную ему. Чтобы определить, из какой таблицы он пришел, есть поле SourceID. Если SourceID равен 1, то он связан с первой таблицей, если она равна 2, это адресная информация для второй таблицы.Условное сопоставление сущностей Framework
Эта устаревшая база данных не имеет ограничений по внешнему ключу, определенных в базе данных, и ее нельзя добавить.
Мне интересно, использую ли я Entity Framework для создания модели, которая будет иметь эту связь. Если таблица 1 может иметь сущность, которая имеет навигацию к информации о адресе (с условием, что SourceID = 1) и тем же самым со второй таблицей.
Я попытался создать условное сопоставление и установить его «When SourceID = 1». Я также удалил отображение из сопоставления столбцов, так как столбец может отображаться только один раз. Когда я пытаюсь скомпилировать, я получаю следующую ошибку:
Ошибка 3004: Проблема с отображением фрагментов, начиная с строки 683: Нет сопоставления для свойств Address.SourceID в Set Addresses. Объект с ключом (PK) не будет округлен, когда: Тип объекта [Model.Address]
Спасибо за вашу помощь!
Что делать, если я хотел бы сделать этот шаг дальше. Что делать, если в моей таблице есть второе условие, определяющее идентификатор типа. Я попытался наследовать от нового типа, а затем добавил новое условие, поэтому TypeId = 2. Рассматривая SQL Profiler, это не сохраняет оба условия в SQL, который он создает. Есть ли способ иметь многоуровневый TPH? –