我只是想知道是否有人知道插入具有自動遞增鍵的嵌套物件的方法,而不必一次插入一個物件。
例如,假設我在資料庫中有以下表。
CREATE TABLE Analysis
(
Analysis bigint IDENTITY(1,1),
AnalysisGuid uniqueidentifier NULL,
Date date(50) NOT NULL,
CONSTRAINT PK_Analysis PRIMARY KEY(AnalysisId)
);
CREATE TABLE Scenarios
(
ScenarioId bigint IDENTITY(1,1),
AnalysisId bigint NOT NULL,
ScenarioGuid uniqueidentifier NULL,
HVACNumber int NULL,
CONSTRAINT FK_Scenarios_Analysis
FOREIGN KEY(Analysis) REFERENCES Analysis(AnalysisId)
ON DELETE CASCADE,
CONSTRAINT PK_Scenarios PRIMARY KEY(ScenarioId)
);
其中場景分析是 M:1 關系。在具有 M:1 關系的場景下,還有一些其他具有自動增量主鍵的嵌套物件。
通過 API 傳入的物件表示頂層的嵌套分析物件。由于速度是這個應用程式的一個問題,有沒有辦法使用 Entity Framework Core 插入資料而無需通過
插入Analysis物件 --> SaveChanges()--> 獲取分析主鍵 --> 遍歷Scenarios串列 --> 一一插入 --> SaveChanges()--> 獲取Scenario主鍵 --> ...
任何幫助,將不勝感激。謝謝!
uj5u.com熱心網友回復:
如果您的 EF 正確/完全設定(父/子之間的導航屬性,宣告為資料庫生成的鍵等),您只需將子物件添加到父的導航屬性,將父物件添加到背景關系集并保存它..
var p = new Parent();
var c1 = new Child();
var c2 = new Child();
p.Children.Add(c1);
p.Children.Add(c2);
context.Parents.Add(p);
context.SaveChanges();
保存完成后,p.Id/c1.ParentId/c2.ParentId將是資料庫計算的父 ID,c1.Id/c2.Id也將是它們的計算值。
它也會反過來作業(將父級添加到子級);更改跟蹤器并不挑剔,只要它可以以某種方式到達您的更改
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/376712.html
