我正在嘗試在我的專案中添加回圈關系。我有以下問題:我的資料庫包含一個帶有預訂的表(在特定機器上)。由于機器可以一次處理多個預訂,因此我有另一個表存盤所有(重疊的)并行預訂。現在如何將重疊預訂附加到原始預訂元素?我想像這樣訪問重疊:
var bookings = dbContext.Booking.Include(x => x.OverlapBookings).ToList();
foreach (var booking in bookings)
{
var overlaps = booking.OverlapBookings;
...
但是,在嘗試添加遷移時,我遇到了以下錯誤:
無法確定型別為“ICollection”的導航“BookingDbModel.OverlapBookings”表示的關系。手動配置關系,或使用“[NotMapped]”屬性或使用“OnModelCreating”中的“EntityTypeBuilder.Ignore”忽略此屬性。
我現在如何定義這種回圈關系?
以下是課程:
public class BookingDbModel
{
public int id { get; set; }
public string Name { get; set; }
public string Client { get; set; }
public string Machine { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public ICollection<OverlapBookingDbModel> OverlapBookings { get; set; }
}
和
public class OverlapBookingDbModel
{
public int OriginalBookingId { get; set; }
public BookingDbModel OriginalBooking { get; set; }
public int TargetBookingId { get; set; }
public BookingDbModel TargetBooking { get; set; }
}
uj5u.com熱心網友回復:
通過以下手動關系定義,物體更新成功,所有模型現在只需呼叫一次 dbContext 即可訪問:
資料庫背景關系.cs
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<BookingDbModel> Booking { get; set; }
public DbSet<OverlapBookingDbModel> OverlapBooking { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<OverlapBookingDbModel>()
.HasOne(p => p.OriginalBooking)
.WithMany(b => b.OverlapBookings)
.HasForeignKey(k => k.OriginalBookingId);
base.OnModelCreating(modelBuilder);
}
}
我現在可以像這樣訪問所有相關的 Overlapbookings:
var testbookings = dbContext.Booking.Include(x => x.OverlapBookings).ThenInclude(y => y.TargetBooking).FirstOrDefault(x => x.Id == 12);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/537639.html
