簡體   English   中英

使用實體框架將數據保存到 SQL 服務器時的外鍵問題

[英]Foreign key problem when saving data to SQL Server using Entity Framework

C#代碼及數據庫查看

這是我的數據庫架構:

CREATE TABLE University 
(
    UniversityID int NOT NULL IDENTITY,
    UniversityName nvarchar(100) NOT NULL,
    PRIMARY KEY (UniversityID)
)

CREATE TABLE Enstitute 
(
    EnstituteID int NOT NULL IDENTITY,
    UniversityID int NOT NULL,
    EnstituteName nvarchar(100),
    PRIMARY KEY (EnstituteID),
    FOREIGN KEY (UniversityID) REFERENCES University(UniversityID)
) 

部分實體框架代碼:

en.EnstituteName = enstituteBox.Text; //entitute name input
uni.UniversityName = universityBox.Text;  //university name input

db.Enstitute.Add(en);
db.University.Add(uni);
db.SaveChanges(); 

我的問題是,當我添加用戶輸入的數據時,我寫了相同的大學名稱,但在數據庫中記錄了使用不同 UniversityID 保存的相同大學名稱。 1 個學院有 1 個大學,1 個大學有多個學院。 當我 select 一所大學時,如果之前選擇了大學,我想將相同的 UniversityID(外鍵)保存到 Enstitute 表,而不是新的外鍵 ID。 有人能幫我嗎?

據我了解,問題是您正在添加大學,即使已經存在。 您的 PK 指向 ID,因此名稱不是其中的一部分。 可能您需要指定雙 PK 或檢查大學名稱是否已經存在。

嘗試這個

var university = await db.University.FirstOrDefaultAsync(x =>x.UniversityName == uni.UniversityName);  

if(university == null){   
    //your code 
}
else 
{   
    en.UniversityId = university.UniversityId;   
    db.Enstitude.Add(en);
}  
await db.SaveChangesAsync();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM