У меня проблемы с внешним ключом, оказывается, что я делаю ревизию старой системы, в которую добавляется новая таблица, и при этом возникает следующее.
Короче говоря, У меня есть следующие 3 класса.
public class StepUp
{
[Key]
[Column(Order = 0)]
public string CodigoDelfos { get; set; }
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Revision { get; set; }
public virtual ICollection<Accesorio_x_Trafos> Accesorios { get; set; }
//More irrelevant properties..
}
public class Transformador
{
[Key]
[Column(Order = 0)]
public string Codigo_delfos { get; set; }
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Revision { get; set; }
public virtual ICollection<Accesorio_x_Trafos> Accesorio_x_Trafos { get; set; }
//More irrelevant properties..
}
public class Accesorio_x_Trafos
{
[Key]
[Column(Order = 0)]
public string CodigoAccesorio { get; set; }
[Key]
[Column(Order = 1)]
public string CodigoDelfos { get; set; }
[Key]
[Column(Order = 2)]
public int Revision { get; set; }
public int? Cantidad { get; set; }
}
Проблема в том, что и StepUp
, и Transformador
имеют отношение 1- * с Accessorio_x_Trafos
.
При переносе база данных создан правильно (добавлены FK)
(игнорируйте FK Accesorios
, который является одним из свойств, которые я удалил, чтобы не иметь столько кода)
Проблема в том, что когда я пытаюсь, оба изменяют объект типа Transformer (я делаю это следующим образом)
//Get any object..
var transformador = mContext.Transformador.First();
//Add random data..
transformador.Accesorio_x_Trafos = new List<Accesorio_x_Trafos>
{
new Accesorio_x_Trafos
{ CodigoDelfos = transformador.Codigo_delfos, Revision = transformador.Revision, Cantidad = 1, CodigoAccesorio = "05-CBPA0150000802000P0800"},
new Accesorio_x_Trafos
{ CodigoDelfos = transformador.Codigo_delfos, Revision = transformador.Revision, Cantidad = 2, CodigoAccesorio = "05-CBPA0150000803150P0700"},
new Accesorio_x_Trafos
{ CodigoDelfos = transformador.Codigo_delfos, Revision = transformador.Revision, Cantidad = 3, CodigoAccesorio = "05-CBPA0150000803150P0700"}
};
//Save it
mContext.SaveChanges();
Но это выдает следующее исключение
Произошла ошибка при сохранении сущностей, которые не предоставляют свойства внешнего ключа для своих отношений. Свойство EntityEntries вернет значение NULL, поскольку один объект не может быть определен как источник исключения. Обработка исключений, в то время как ...
И в InnerException инструкция
INSERT в конфликте с ограничением FOREIGN KEY \ "FK_dbo.Accesorio_x_Trafos_dbo.StepUps_Codigoelf Конфликтное соглашение с базой данных \ "DBTrafos \", табла \ "dbo.StepUps \". \ R \ nСерминал обучения.
Как я могу справиться с этим?