实体框架CF Fluent API映射

时间:2012-09-05 12:23:17

标签: entity-framework mapping

我有两个实体:

public class User
{
  public int userId { get; set; }
  public string name { get; set; }
  public Guid userGuid { get; set; }
}

public class Absence
{
  public int absenceId { get; set; }
  public Guid applicantId { get; set; }
  public User applicant { get; set; }
  public Guid permitterId{ get; set; }
  public User permitter{ get; set; }
  ...
}

AbsencesConfiguration:
  this.HasRequired(u => u.Applicant).WithMany().HasForeignKey(d => d.ApplicantId);
  this.HasRequired(u => u.Permitter).WithMany().HasForeignKey(d => d.PermitterId);

我想在两个类之间使用Fluent API映射,但它会显示以下错误消息:

  

Blockquote \ tSystem.Data.Entity.Edm.EdmAssociationConstraint ::参照约束的从属角色中的所有属性的类型必须与主体角色中的相应属性类型相同。实体'Absences'上的属性'ApplicantId'与参照约束'Absences_Applicant'中实体'User'上的属性'UserId'不匹配。

我认为这是因为EF尝试将两个表与User实体的UserId连接而不是UserGuid列。我想我会让这两列Absence实体独一无二,但我怎么能把它们映射到一起呢?

提前致谢。

1 个答案:

答案 0 :(得分:5)

问题是你的用户主键是一个int,但你的外键是一个Guid。

您需要更改User类以获取userId的指南:

  public Guid userId { get; set; }

或者,更新您的Absence类以使用int:

 public int applicantId { get; set; }