[英]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.