Fluent API 一对一关系映射
Fluent API one to one relationship mapping
我正在尝试使用 Fluent API 建立 "One to one" 关联。这是我的 类 :
public class Person
{
public Guid Id { get; set; }
public Guid ProfilId { get; set; }
public DateTime InsertDate { get; set; }
public DateTime UpdateDate { get; set; }
public virtual Profil Profil { get; set; }
}
public class Profil
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public String Email { get; set; }
public virtual Person Person { get; set; }
}
public class PersonMap : EntityTypeConfiguration<Person>
{
public PersonMap()
{
...
ToTable("Person");
HasRequired(t => t.Profil)
.WithOptional(c => c.Person)
.Map(m => m.MapKey("ProfilId"));
}
}
此实现抛出异常Invalid column name 'ProfilId'.
有人能告诉我如何使用这些 类 建立具有 1-1 关系的映射吗?
谢谢
配置一对一关系时,Entity Framework要求依赖的主键也是外键,所以可以使用Data Annotations[=27]映射关系=]如下:
public class Person
{
[Key]
[ForeignKey("Profil")]
public Guid ProfilId { get; set; }
public DateTime InsertDate { get; set; }
public DateTime UpdateDate { get; set; }
public virtual Profil Profil { get; set; }
}
或使用 Fluent Api:
HasKey(t=>t.ProfilId);
HasRequired(t => t.Profil).WithOptional(c => c.Person);
编辑 1:
好吧,EF 允许您在两个具有自己的 PK 的实体之间创建一对一关系,但您不能使用 FK 属性,因此,删除 ProfileId
Person
实体并以这种方式配置关系:
HasRequired(t => t.Profil).WithOptional(c => c.Person);
MapKey
方法用于更改数据库中的外键名称,但是你的实体中不能有同名的属性,否则会异常抛出。
我正在尝试使用 Fluent API 建立 "One to one" 关联。这是我的 类 :
public class Person
{
public Guid Id { get; set; }
public Guid ProfilId { get; set; }
public DateTime InsertDate { get; set; }
public DateTime UpdateDate { get; set; }
public virtual Profil Profil { get; set; }
}
public class Profil
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public String Email { get; set; }
public virtual Person Person { get; set; }
}
public class PersonMap : EntityTypeConfiguration<Person>
{
public PersonMap()
{
...
ToTable("Person");
HasRequired(t => t.Profil)
.WithOptional(c => c.Person)
.Map(m => m.MapKey("ProfilId"));
}
}
此实现抛出异常Invalid column name 'ProfilId'.
有人能告诉我如何使用这些 类 建立具有 1-1 关系的映射吗?
谢谢
配置一对一关系时,Entity Framework要求依赖的主键也是外键,所以可以使用Data Annotations[=27]映射关系=]如下:
public class Person
{
[Key]
[ForeignKey("Profil")]
public Guid ProfilId { get; set; }
public DateTime InsertDate { get; set; }
public DateTime UpdateDate { get; set; }
public virtual Profil Profil { get; set; }
}
或使用 Fluent Api:
HasKey(t=>t.ProfilId);
HasRequired(t => t.Profil).WithOptional(c => c.Person);
编辑 1:
好吧,EF 允许您在两个具有自己的 PK 的实体之间创建一对一关系,但您不能使用 FK 属性,因此,删除 ProfileId
Person
实体并以这种方式配置关系:
HasRequired(t => t.Profil).WithOptional(c => c.Person);
MapKey
方法用于更改数据库中的外键名称,但是你的实体中不能有同名的属性,否则会异常抛出。