1

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; }
   ...   
}
4

1 回答 1

0

由于 BookingKey 既是 Booking 的 Key 也是 Customer 的 ForeignKey 尝试在设置期间设置 ForeignKey 字段。

HasOptional(c => c.Customer)
     .WithOptionalPrincipal()
     .Map(m => m.MapKey("BookingKey"));
于 2015-09-24T17:32:28.847 回答