0

私は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);

2 つのクラス間の Fluent API マッピングが必要ですが、次のエラー メッセージが表示されます。

Blockquote\tSystem.Data.Entity.Edm.EdmAssociationConstraint: : 参照制約の従属ロールのすべてのプロパティの型は、主ロールの対応するプロパティの型と同じでなければなりません。エンティティ 'Absences' のプロパティ 'ApplicantId' のタイプは、参照制約 'Absences_Applicant' のエンティティ 'User' のプロパティ 'UserId' のタイプと一致しません。

これは、EF が UserGuid 列ではなく User エンティティの UserId を使用して 2 つのテーブルを結合しようとするためだと思います。Absence エンティティのこれら 2 つの列を一意にしようと考えましたが、どうすればそれらを一緒にマップできますか?

前もって感謝します。

4

1 に答える 1

5

問題は、ユーザーの主キーが int であるのに、外部キーが Guid であることです。

userId の GUID を持つように User クラスを変更する必要があります。

  public Guid userId { get; set; }

または、Absence クラスを更新して int を使用します。

 public int applicantId { get; set; }
于 2012-09-05T12:39:13.500 に答える