Один ко многим и один к одному на одних и тех же объектах - PullRequest
0 голосов
/ 08 мая 2018

Бизнес-кейс

У нас есть рубашка, которую можно заказать в нескольких цветах: Yello; Белый; Оранжевый; Синий; Зеленый; Красный; Однако по умолчанию для рубашки можно выбрать только один цвет.

Осуществление

Вот что у меня есть:

public class Shirt
{
    public int Id { get; set; }

    public string Sku { get; set; }
    public string Description { get; set; }

    public Color DefaultColor { get; set; }

    public ICollection<Color> AvailableColors { get; set; }
}

public class Color
{
    public int Id { get; set; }

    public string ColorCode { get; set; }
    public string Name { get; set; }
    public string HexCode { get; set; }

    public int ShirtId { get; set; }
    public virtual Shirt Shirt { get; set; }
}


public class ShirtContext : DbContext
{
    public ShirtContext() : base("name=DefaultConnection") { }
    public DbSet<Shirt> Shirts { get; set; }
    public DbSet<Color> Colors { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Shirt>()
            .HasRequired(c => c.DefaultColor)
            .WithRequiredDependent(c => c.Shirt);

        modelBuilder.Entity<Color>()
            .HasRequired(c => c.Shirt)
            .WithMany(o => o.AvailableColors)
            .WillCascadeOnDelete();

        base.OnModelCreating(modelBuilder);
    }
}

Выпуск

System.Data.Entity.Core.MetadataException: 'Schema specified is not valid. Errors: The relationship 'ShirtPortal.Data.Color_Shirt' was not loaded because the type 'ShirtPortal.Data.Color' is not available.'

Могу ли я получить помощь в настройке отношения внешнего ключа в моих организациях в соответствии с моим бизнес-кейсом?

...