У меня есть две таблицы Cargo
и CargoMovement
следующим образом:
public class Cargo
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CargoID { get; set; }
public string description { get; set; }
public virtual CargoMovement CargoMovement { get; set; }
}
public class CargoMovement
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public DateTime TimeOfTransit { get; set; }
public int CargoID { get; set; }
public virtual Cargo Cargo { get; set; }
}
Каждый Cargo
может иметь ОДИН или Ноль CargoMovement
.Каждый CargoMovement
будет иметь ровно один Cargo
.
CargoID
в таблице Cargo является первичным ключом.Столбец CargoID
в CargoMovement
должен быть внешним ключом.
Но когда я пишу следующий свободный API, происходит обратное.
modelBuilder.Entity<PisMark3.Models.Cargo.Cargo>()
.HasOptional(c => c.CargoMovement)
.WithRequired(cg => cg.Cargo)
.WillCascadeOnDelete(false);
результирующая миграция:
CreateTable(
"dbo.CargoMovements",
c => new
{
ID = c.Int(nullable: false, identity: true),
TimeOfTransit = c.DateTime(nullable: false),
CargoID = c.Int(nullable: false),
})
.PrimaryKey(t => t.ID)
.ForeignKey("dbo.Cargoes", t => t.ID)
.Index(t => t.ID);
Что означает, что когда я пытаюсь вставить
insert into dbo."CargoMovements" ("TimeOfTransit","CargoID")
values(NOW(),44)//44 is existing CargoID in Cargo table
Выдает ошибку, что в таблице dbo.Cargo
нет идентификатора 1.(1 означает значение CargoMovement
)
Я ищу решение Fluent API.