对HasRequired
各州的帮助
配置此实体类型的必需关系。除非指定此关系,否则实体类型的实例将无法保存到数据库中。数据库中的外键将不可为空。
我有一个不需要的字段配置为
public class BookingConfiguration : EntityTypeConfiguration<Booking>
{
public BookingConfiguration()
{
HasKey(ai => ai.BookingKey);
...
HasRequired(b => b.Customer)
.WithRequiredPrincipal();
ToTable("Booking");
}
}
这当然很奇怪,因为不需要客户。但是,它适用于:D 既适用于空值,也适用于设置客户时。如果我改为
HasOptional(b => b.Customer)
.WithOptionalPrincipal();
它失败了(已经从数据库中获取)
列名“Booking_BookingKey”无效。
失败的代码
var existingBooking = await _context.DbSet<Booking>().FirstAsync(ai => ai.BookingKey == confirmCommand.BookingKey);
编辑:实体的结构是
public class Booking
{
public Guid BookingKey { get; set; }
...
public Customer Customer { get; set; }
}
public class Customer
{
public Guid BookingKey { get; set; }
...
}