[英]Linq2Db: How to include navigation properties on (bulk-)insert
我正在嘗試使用批量插入功能。 我的 model 看起來像這樣:
public class Stockprice
{
[Key]
public int Id { get; set; }
[Required]
[LinqToDB.Mapping.Association(ThisKey = "StockId", OtherKey = "Id")]
public Stock Stock { get; set; }
//some more
}
public class MinuteStockprice : Stockprice { }
代碼插入代碼:
private async Task SavePrices<T>(List<Quote> quotes) where T : Stockprice, new()
{
using var context = _factory.CreateDbContext();
var connection = context.CreateLinqToDbConnection();
connection.TraceSwitchConnection.Level = TraceLevel.Verbose;
connection.OnTraceConnection = x => Console.WriteLine(x.SqlText);
var stocks = new List<T>();
foreach (var quote in quotes)
{
var price = new T { Stock = new Stock() { Id = _isinToStockId[quote.Isin] }, Ask = quote.Ask, Bid = quote.Bid, Time = quote.Time };
stocks.Add(price);
context.Stocks.Attach(price.Stock);
}
await connection.BulkCopyAsync(stocks);
//await context.BulkCopyAsync(stocks);
}
不知道我錯過了什么,但它沒有插入 StockId。 這是生成的 Sql 的頭部:
INSERT INTO [MinuteStockprices]
(
[Time],
[Ask],
[Bid]
)
如何在此處包含 StockId?
該表是這樣創建的:
CREATE TABLE "MinuteStockprices" (
"Id" INTEGER NOT NULL CONSTRAINT "PK_MinuteStockprices" PRIMARY KEY AUTOINCREMENT,
"StockId" INTEGER NOT NULL,
"Bid" REAL NOT NULL,
"Ask" REAL NOT NULL,
"Time" TEXT NOT NULL,
CONSTRAINT "FK_MinuteStockprices_Stocks_StockId" FOREIGN KEY ("StockId") REFERENCES "Stocks" ("Id") ON DELETE CASCADE
)
BulkCopy
是低級命令,它插入到一張表中,並且只在一張表中。 如果您需要插入詳細信息,則必須單獨進行。
還要檢查 class 是否具有StockId
屬性,因為不支持陰影屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.