实体框架CF Fluent API映射

sad*_*ada 0 mapping entity-framework

我有2个实体:

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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

提前致谢.

Mar*_*eta 5

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

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

  public Guid userId { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

 public int applicantId { get; set; }
Run Code Online (Sandbox Code Playgroud)