Итак, у меня есть эта проблема с моим дизайном базы данных. У меня есть четыре таблицы: GARMENTS, Оснастка, Изображения и шрифты.EntityFramework, таблица проектирования базы данных с обнуляемыми внешними ключами
одежды может иметь несколько или никакие вложения так, что легко карта:
modelBuilder.Entity<Garment>().HasMany(m => m.Attachments).WithOptional().HasForeignKey(m => m.GarmentId);
Но усложнение arrises с вложениями. Я прочитал, что наличие нескольких с нулевым значением внешних ключей - это плохая практика, но я не могу понять, как сопоставить этот поток.
прикрепленного может либо иметь изображение ИЛИ с Font. Он никогда не может иметь обоих и должен иметь хотя бы один.
Мой первоначальный класс выглядел следующим образом:
public class Attachment
{
public int ImageId { get; set; }
public int FontId { get; set; }
[Required] public int GarmentId { get; set; }
[MaxLength(50)] [Required] public string PanelId { get; set; }
public Image Image { get; set; }
public Font Font { get; set; }
}
, но это ничего не навязывает. Есть ли способ, которым EF может справиться с этим в хорошем смысле?
, что это было, если бы было 4 объекта? Конечно, есть лучший дизайн. Но если нет, я не хочу, чтобы все они были операторами: – r3plica
@ r3plica вы могли написать пользовательский 'ValidationAttribute'. Для хорошего образца см. «СвойстваMustMatchAttribute». Если вы действительно хотите перепроектировать все это, у вас может быть базовый класс для 'Image',' Font', ... и иметь внешний ключ базового класса. – Guillaume