Отношения в сущности должны отражать только сущности, а не DTO или не-сущностные классы.Если вы действительно хотите, чтобы класс не-сущности ссылался в сущности, тогда вся ссылка не-сущности должна быть помечена как NotMapped
.
EF поддерживает наследование, но я бы избегал этого, если в этом нет необходимости.AFAIK Поддержка в EF Core все еще несколько ограничена на основе табличных структур, которые вы можете использовать с ней.
public class Endereco
{
public virtual Conceito CidadeCompleto { get; set; }
public string CEP { get; set; }
}
// If Conceito is a table...
public class Conceito
{
[Key]
public string Codigo { get; set; }
public string Descricao { get; set; }
}
, а затем сопоставьте Conceito ...
builder
.OwnsOne(g => g.CidadeCompleto)
.WithOne()
.HasForgeignKey("CidadeCodigo"); // Shadow property for the FK Code.
Это предполагает, что Enderecoимеет FK с именем "CidadeCompleto", который указывает на таблицу CidadeCodigo.
Если Endereco имеет строку для CidadeCompleto, у которой нет вспомогательной таблицы, или является частью отдельной справочной таблицы без прямого FK ивы просто хотите, чтобы конкретный DTO представлял этот код и описание, загружаемое отдельно, тогда я бы порекомендовал, чтобы сущность отобразила столбец, который там находится, и управлял ссылкой DTO отдельно в модели представления, а не в сущности.
Когда вы загружаете Endereco и хотите передать DTO для связанного значения поиска (Code + Description), используйте код CidadeCompleto, чтобы найти соответствующий DTO и заполнить его в модели представления для представления, для которого требуется код и описание.Сущность должна отражать данные в том виде, как они есть в базе данных.Модели представления и DTO отражают то, что вы хотите, чтобы представление / потребитель увидели.Старайтесь разделять эти две проблемы, а не смешивать поля и структуры вида с представлением данных.