這是一個在.NET 5和EF Core版本5.0.9中的webapi專案。我正在使用Swagger測驗這個API。資料庫是SQLite。 我有3個表Product、StockHeader和StockDetail。StockHeader和StockDetail是一對多的關系。 產品表有這些列->
。產品表有這些列
StockHeader表有這些列->
- HdrId
- DocumentNo[/li
- Sign
- 型別為StockDetail的IC集合 。
StockDetail表有這些列->
- Id
- HdrId(外鍵)
- ProductId
- Rate
因此,我的要求是,當我在stockDetail中輸入productID的值時,它應該查找到Product表,獲取該特定Id的比率,并將其寫入StockDetails的Rate列。 我必須在HttpPost中這樣做。 問題是,StockDetail不應該有任何對Product的參考屬性。 我怎樣才能在EF Core中實作這一點呢?
uj5u.com熱心網友回復:
在你的stockdetail類中添加一個簡單的product屬性,在product類中添加一個ienumerable... 并在你的contex中添加一個fluent api的行,將productId與你的物件產品進行映射......
modelBuilder.Entity<Product> ()
.HasMany<StockDetail>(s => s.stockDetaik)
.WithOne(ad => ad.Product)
.HasForeignKey<Product>(ad =>ad.ProductId)。
uj5u.com熱心網友回復:
好的,所以我猜你將有productId作為一個輸入引數。你只需要做一個LINQ查詢,從Products DbSet中獲取所需的產品。
試一下:
var product = dbContext.Products. FirstOrDefault(x => x.Id == productId)。
檢查輸入引數(productId)是否是一個有效的Id是很好的,所以你可以這樣寫:
if(product == null)
throw new ArgumentException("Invalid ID", nameof(productId))。
之后只需指定Rate,以便:
。Rate = product.Rate;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/309864.html
標籤:
上一篇:英孚核心翻譯查詢形式SQL
