Здесь источник проблемы - Field
объект. Он используется как таблица базы данных и одновременно используется как базовый класс для других сущностей таблицы. EF не позволяет свойству, которое используется в ограничении внешнего ключа, находиться в нескольких таблицах с наследованием, как в этом случае свойство CompanyGuid
является столбцом как Field
, так и его производных Column
сущностей.
Чтобы преодолеть это ограничение EF, я могу предложить вам два решения:
- Первый вариант, создать полностью отдельный базовый класс и унаследовать все 3 объекта от этого базового класса:
public abstract class EntityBase
{
public Guid Guid { get; set; }
public Guid CompanyGuid { get; set; }
}
public class Field : EntityBase
{
}
public class Column : EntityBase
{
public Guid TableGuid { get; set; }
public Table Table { get; set; }
}
public class Table : EntityBase
{
public List<Column> Columns { get; set; }
}
Второй вариант: удалить
Field
наследование и добавить его поля к объектам
Table
и
Column
, как показано ниже:
public class Field
{
public Guid Guid { get; set; }
public Guid CompanyGuid { get; set; }
}
public class Column
{
public Guid Guid { get; set; }
public Guid CompanyGuid { get; set; }
public Guid TableGuid { get; set; }
public Table Table { get; set; }
}
public class Table
{
public Guid Guid { get; set; }
public Guid CompanyGuid { get; set; }
public List<Column> Columns { get; set; }
}