[英]Entity Framework Core Calibre
我正在為Caliber數據庫編寫EF核心包裝。 我已經如下配置BookTagLink
表
builder.HasKey(x => new {x.TagId, x.BookId });
builder.Property(b => b.BookId)
.ForSqliteHasColumnName("book")
.IsRequired();
builder.Property(b => b.TagId)
.ForSqliteHasColumnName("tag")
.IsRequired();
但是var book = tag.BookTagLinks.Select(b => b.Book);
錯誤出在:
值不能為空。\\ r \\ n參數名稱:source
我認為問題在於,在BookTagLinks
表上設置了一個Id
( bigint
)作為主鍵,當我使用書名和標簽ID時,它沒有連接點並且找不到源。
當數據庫中有一個簡單的密鑰而不是一個外鍵時,如何建立多對多關系?
原來我很煩。 我將BookTagLinks聲明為ICollection,但忘了在構造函數中實例化它。 另外,我發現您必須指定關系。 我按照“公共重寫無效Map(EntityTypeBuilder builder){builder.ToTable(“ books_tags_link”);
base.Map(builder);
builder.HasKey(x => new {x.TagId, x.BookId });
builder.HasOne(bt => bt.Book)
.WithMany(b => b.BookTagLinks)
.HasForeignKey(bt => bt.BookId);
builder.HasOne(bt => bt.Tag)
.WithMany(t => t.BookTagLinks)
.HasForeignKey(bt => bt.TagId);
builder.Property(b => b.BookId)
.ForSqliteHasColumnName("book")
.IsRequired();
builder.Property(b => b.TagId)
.ForSqliteHasColumnName("tag")
.IsRequired();
}`
現在一切正常...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.