Прежде всего, эти вопросы похожи, но определенно не совпадают:
Могу ли я смешать таблицу по иерархии и таблицу по типу в Entity Framework? - относится к другому сценарию.
Entity Framework: смешивать таблицу по типу и таблице по иерархии - еще один сценарий, который, несмотря на принятие ответа на первый сценарий, не связан с ним (*).
(*) Во-вторых, я успешно смешал таблицу на тип и таблицу на иерархию в Entity Framework, когда базовая сущность отображается с использованием таблицы на сущность и таблицы с дискриминатором таблицы. по иерархии ниже по цепочке.
<Ч />
Я пытаюсь отобразить следующее:
Таблица:
BaseTable
{
int PK1;
int PK2;
string? Value1;
double? Value2;
}
ChildTable3
{
int PK1;
int PK2;
int Value;
}
Объекты:
abstract BaseEntity : class // Maps to BaseTable
{
int PK1; // Maps to PK1 in relevant table
int PK2; // Maps to PK2 in relevant table
}
Entity1 : BaseEntity // Maps to BaseTable when Value1 != null
{
string Value; // Maps to Value1
}
Entity2 : BaseEntity // Maps to BaseTable when Value1 == null && Value2 != null
{
double Value; // Maps to value2
}
Entity3 : BaseEntity // Maps to ChildTable3
{
int Value; // Maps to value
}
До добавления Entity3 сопоставления работали.
После добавления Entity3 и его отображения я получаю следующую ошибку при компиляции:
Ошибка 1 Ошибка 3026: проблема в отображении фрагментов, начинающихся со строк 980, 986, 995: возможна потеря данных или нарушение ограничения ключа в таблице BaseTable.
Сущность с ключом (PK) не будет в обоих направлениях, когда:
(PK находится в EntitySet «BaseTables», а Entity имеет тип [MyNamespace.Entity3])
Путь \ К \ My.edmx 981 15 MyAssembly
- Есть ли способ заставить эту работу?
- Если есть возможность взломать edmx, чтобы это работало, потеряю ли я взлом при каждом обновлении из базы данных?