Banco de dados de propagação de erros, problema de chave estrangeira

Eu construí meus modelos usando o POCO. Quando eu vou para semear meu banco de dados eu recebo:

Não é possível determinar o fim principal da relação "CSP.Models.Type_Color". Diversas entidades adicionadas podem ter a mesma chave primária

Aqui estão os modelos em questão:

public class Type
{
    [Key]
    [ScaffoldColumn(false)]
    public int TypeId { get; set; }

    [Required(ErrorMessage = "A Type Name is Required")]
    [Display(Name="Type")]
    public string Name { get; set; }

    public int ColorId { get; set; }
    public bool Other { get; set; }

    //Navigations
    [ForeignKey("ColorId")]
    public virtual Color Color { get; set; }
    public virtual List<Tools> tools { get; set; }

}

public class Color
{
    [Key]
    [ScaffoldColumn(false)]
    public int ColorId { get; set; }

    [Required(ErrorMessage = "A name is required")]
    public string Name { get; set; }

    public string Description { get; set; }

    //navigation
    public virtual List<Type> Types { get; set; }
}

A maior parte da marcação que fiz depois de ler sugestões.

Meu código de origem que está recebendo o erro está aqui:

var colors = new List<Color>
        {
            new Color{Name="Red"},
            new Color{Name="White"}
        };

            var types = new List<Type>
        {
            new Type{ Name="Hammer", Color = colors.Where(ws => ws.Name=="Red").Single()},
            new Type{ Name= "Electric", Color = colors.Where(ws => ws.Name=="Red").Single()}
        };

new List<Tool>
        {
            new Wine{ Maker= Maker.Single(v => v.Name=="HammerCo"), Type= types.Single(wt => wt.Name=="hammer")},
        }
        }.ForEach(a => context.Tools.Add(a));
            context.SaveChanges();

Eu também tentei adicionar cada valor ao contexto e depois salvá-lo. Eu recebi este erro depois que tentou salvar a entidade de tipo:

[System.Data.SqlClient.SqlException] = {"A instrução INSERT entrou em conflito com a restrição FOREIGN KEY \" Type_Color \ ". O conflito ocorreu no banco de dados \" TestTools \ ", table \" dbo.Colors \ ", coluna 'ColorId '. \ r \ nA declaração foi encerrada. "}

o que estou perdendo?

questionAnswers(1)

yourAnswerToTheQuestion