Asp.net mvc 如何使用code first Fluent API将属性设置为一对一关系中的外键?
我有两个班级的学生和学生地址。学生有一个地址的地方。现在,我如何使用Fluent API将Student类的主键StudentId设置为StudentAddress类的外键。我想要一个不同的属性,例如StudentId将是StudentAddress中的外键。我该怎么做?我使用的是实体框架6。这是我的课Asp.net mvc 如何使用code first Fluent API将属性设置为一对一关系中的外键?,asp.net-mvc,entity-framework-6,ef-fluent-api,Asp.net Mvc,Entity Framework 6,Ef Fluent Api,我有两个班级的学生和学生地址。学生有一个地址的地方。现在,我如何使用Fluent API将Student类的主键StudentId设置为StudentAddress类的外键。我想要一个不同的属性,例如StudentId将是StudentAddress中的外键。我该怎么做?我使用的是实体框架6。这是我的课 public class Student { public int StudentId { get; set; } public string StudentName { get
public class Student
{
public int StudentId { get; set; }
public string StudentName { get; set; }
//Navigation property
public virtual StudentAddress StudentAddress { get; set; }
}
public class StudentAddress
{
public int StudentAddressId { get; set; }
public int StudentId { get; set; } //Set this property as a forign key
public string Address { get; set; }
//Navigation property
public virtual Student Student { get; set; }
}
您可以使用以下代码轻松地完成此操作:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Configure StudentId as PK for StudentAddress
modelBuilder.Entity<StudentAddress>()
.HasKey(e => e.StudentId);
// Configure StudentId as FK for StudentAddress
modelBuilder.Entity<Student>()
.HasOptional(s => s.Address)
.WithRequired(ad => ad.StudentId);
}
有关更多信息:
希望以上信息有帮助
谢谢
Karthik你不能那样做。一般的技巧是使StudentAddress的StudentId同时为PK和FK。是的,我也看到了。但我不确定是我的编码问题还是我遗漏了什么。非常感谢。
public class Student
{
public Student() { }
public int StudentId { get; set; }
public string StudentName { get; set; }
public virtual StudentAddress Address { get; set; }
}
public class StudentAddress
{
[Key, ForeignKey("Student")]
public int StudentId { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public int Zipcode { get; set; }
public string State { get; set; }
public string Country { get; set; }
public virtual Student Student { get; set; }
}