мой код как ниже
public class User
{
public int ID { get; set; }
public int BillingAddressID { get; set; }
public Address BillingAddress { get; set; }
public IList<Shipment> Shipments { get; set; }
}
public class Address
{
public int ID { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string ZipCode { get; set; }
}
public class Shipment
{
public int ID { get; set; }
public string State { get; set; }
public int DeliveryAddressID { get; set; }
public Address DeliveryAddress { get; set; }
public User ShipUser { get; set; }
//[ForeignKey("ShipUser")]
public int ShipUserID { get; set; }
//public int UserId { get; set; }
}
public class TestContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Address> Addresses { get; set; }
public DbSet<Shipment> Shipments { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Shipment>().HasRequired(u => u.ShipUser)
.WithMany(d => d.Shipments)
.HasForeignKey(c => c.ShipUserID)
.WillCascadeOnDelete(false);
}
}
- если я удалю метод переопределения, я получу сообщение об ошибке "SqlException: введение ограничения FOREIGN KEY 'FK_Shipments_Users_ShipUserID' в таблице" Отправления "может вызвать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, или изменить другие ограничения FOREIGN KEY.
Не удалось создать ограничение. Смотрите предыдущие ошибки. "
- если я удалю ShipUserID в классе пересылки, он будет работать нормально, когда я увижу таблицу, созданную ef, я обнаружу столбец с именем Shipment_UserID в таблице отгрузки. Я не знаю почему.
- Если переименовать ключ класса в UserID, он также будет работать нормально.
Я все равно пробую, но не знаю причину, мне нужны книги об ассоциациях EF.