簡體   English   中英

HasRequired的奇怪行為

[英]Strange behavior with HasRequired

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

由於BookingKey既是預訂的密鑰,也是客戶的ForeignKey,因此請嘗試在設置過程中設置ForeignKey字段。

HasOptional(c => c.Customer)
     .WithOptionalPrincipal()
     .Map(m => m.MapKey("BookingKey"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM