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保存的相同大学名称。一个学院有一所大学,一所大学有一个以上的学院。当我选择一所大学时,如果之前选择了该大学,我想保存到同一所大学ID(外键(到Entitute表,而不是新的外键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();