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?