Причина, по которой заказ теперь требуется для OrderLine, заключается в том, что вы использовали HasRequired()
в своем свободном коде API для настройки связи. Нам просто нужно изменить это значение на HasOptional
, как показано в следующем коде:
this.HasOptional(ol => ol.Order)
.WithMany(o => o.OrderLines)
.HasForeignKey(ol => ol.OrderId);
Это в основном сделает столбец OrderLines.OrderId как (INT, NULL) в БД, чтобы записи OrderLine были независимыми. Нам также необходимо отразить это изменение в объектной модели, сделав OrderId
обнуляемым в классе OrderLine:
public class OrderLine
{
public int Id { get; set; }
public int? OrderId { get; set; }
public decimal SomeOtherProperty2 { get; set; }
public virtual Order Order { get; set; }
}
Теперь вы можете сохранять Строки заказа, не указывая для них Заказ.