【发布时间】:2021-01-06 15:36:13
【问题描述】:
我在我的应用程序中使用 Entity Framework Core 和 SQL Server。我对外键非常熟悉,但我想学习如何正确地为基于类型的实体提供外键。
例如:
父类AppUser:
CREATE TABLE AppUser
(
Id INT NOT NULL PRIMARY KEY IDENTITY(1, 1),
Name VARCHAR(255) NOT NULL,
UserTypeId SMALLINT NOT NULL -- !This is the important part for me! if 0 = Student if 1 = Teacher
);
CREATE TABLE Student
(
Id INT NOT NULL PRIMARY KEY IDENTITY(1, 1),
AppUserId INT NOT NULL,
CONSTRAINT FK_Student_AppUser FOREIGN KEY (AppUserId)
REFERENCES AppUser(Id)
);
CREATE TABLE Teacher
(
Id INT NOT NULL PRIMARY KEY IDENTITY(1, 1),
AppUserId INT NOT NULL,
CONSTRAINT FK_Student_AppUser FOREIGN KEY (AppUserId)
REFERENCES AppUser(Id)
);
我的问题:有没有更好的方法来建立这种关系。因为在 Entity Framework 中,当我尝试获取用户时,我总是需要检查 TypeId 并为类型设置 if else 块,然后对表 student 或 teacher 进行查询。任何建议都会很棒。谢谢!
【问题讨论】:
-
你能发布一些代码来展示你想要实现的目标吗?你的
UserTypeId专栏——它的目的是什么? -
@PlamenYordanov 例如,当我尝试更新学生时,我将 AppUser Id 发布到 .net web api。然后,我必须获得具有该 ID 的 AppUser。那么我应该创建一个 if 块,例如: if(user.TypeId == 0) // update student.我直接想在不写 if 块的情况下获取学生对象
-
好吧,在更新特定用户之前必须满足一个条件,您必须以某种方式识别该对象。您如何获得用户?
标签: sql-server database asp.net-core entity-framework-core foreign-keys