Entity framework 核心关系 - 外键
Entity framework core relationships - foreign key
由于我刚刚开始学习 entity framework,所以我想知道如何正确地在两个 table 之间创建关系。
我会自己尝试,但我什至无法设置数据库连接:(
这是我的问题,这里有两个 类 (tables) Student
和 Grade
:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int GradeId { get; set; }
public Grade Grade { get; set; }
}
public class Grade
{
public int GradeId { get; set; }
public string GradeName { get; set; }
}
如上例所示,我意识到将类型 Grade
添加为 属性 会创建与 table Grade
的关系,
现在很重要 但是 GradeId
呢,它不经意地持有外键值?它位于 Grade
类型之上,它的名称是 GradeId
,如果我将它放在其他地方并命名为 StudentGradeId
,会不会仍然是 ForeignKeyId
?或者它必须是严格的(像我的例子一样包含类型 + Id):TypeNameId = GradeId
?
EF 将按照惯例将导航属性与外键属性匹配。所以如果你的 Navigation 属性 被称为 Grade 而外键 属性 被称为 GradeId,它们将被自动匹配。
如果它们不遵循约定,您只需通过使用 ForeignKeyAttribute, or by using the Fluent API in OnModelCreating.
修饰属性来显式配置它们
由于我刚刚开始学习 entity framework,所以我想知道如何正确地在两个 table 之间创建关系。
我会自己尝试,但我什至无法设置数据库连接:(
这是我的问题,这里有两个 类 (tables) Student
和 Grade
:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int GradeId { get; set; }
public Grade Grade { get; set; }
}
public class Grade
{
public int GradeId { get; set; }
public string GradeName { get; set; }
}
如上例所示,我意识到将类型 Grade
添加为 属性 会创建与 table Grade
的关系,
现在很重要 但是 GradeId
呢,它不经意地持有外键值?它位于 Grade
类型之上,它的名称是 GradeId
,如果我将它放在其他地方并命名为 StudentGradeId
,会不会仍然是 ForeignKeyId
?或者它必须是严格的(像我的例子一样包含类型 + Id):TypeNameId = GradeId
?
EF 将按照惯例将导航属性与外键属性匹配。所以如果你的 Navigation 属性 被称为 Grade 而外键 属性 被称为 GradeId,它们将被自动匹配。
如果它们不遵循约定,您只需通过使用 ForeignKeyAttribute, or by using the Fluent API in OnModelCreating.
修饰属性来显式配置它们