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; }
...
}
答案 0 :(得分:0)
由于BookingKey既是预订的钥匙,也是客户的ForeignKey,尝试在安装过程中设置ForeignKey字段。
HasOptional(c => c.Customer)
.WithOptionalPrincipal()
.Map(m => m.MapKey("BookingKey"));