2つのオブジェクト間の関係を割り当てていますが、マッピングにエラーが発生しています。1対1の関係エンティティフレームワークの外部キーマッピング
私は次のオブジェクトがあります。
public abstract class EntityBase : IEntity
{
public int Id { get; set; }
}
public class ManagerUser : EntityBase
{
public string UserCode { get; set; }
public string Title { get; set; }
public virtual Staff StaffDetails { get; set; }
}
public class Staff : EntityBase
{
public string UserCode { get; set; }
public string DOB { get; set; }
}
public class ManagerUserMap : EntityMapBase<ManagerUser>
{
protected override void SetupMappings()
{
base.SetupMappings();
//this.HasKey(t => t.UserCode);
this.ToTable("ManagerUsers");
this.Property(t => t.Id).HasColumnName("ManagerUsersID")
.HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
this.Property(t => t.Title).HasColumnName("txtTitle");
this.HasRequired(x => x.StaffDetails)
.WithMany()
.HasForeignKey(x => x.UserCode);
}
}
public class StaffMap : EntityMapBase<Staff>
{
protected override void SetupMappings()
{
base.SetupMappings();
//this.HasKey(t => t.UserCode);
this.ToTable("TblStaff");
this.Property(t => t.Id).HasColumnName("StaffID")
.HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity);
this.Property(t => t.UserCode).HasColumnName("User_Code");
this.Property(t => t.DateOfBirth).HasColumnName("dob");
}
}
私は、次のエラーを取得しています:
The type of property 'UserCode' on entity 'ManagerUser' does not match the type of property 'Id' on entity 'Staff' in the referential constraint 'ManagerUser_StaffDetails'
私は周りに検索し、外部キーを比較するためにそれを得るための解決策を見つけることができませんでしたID
プロパティの代わりにUserCode
プロパティのManagerUser
にStaff
というプロパティがあります。
あなたがManagerUserとスタッフの両方の主キーとしてユーザーコードを割り当てているとのSametimeで、あなたはUSERCODEを述べていることはスタッフのためのForeignKeyです... –
あなたがすることはできませんEF6でそれを行う。 EF6は関係の「プリンシパル」のPKに対してのみFKを作成することができます。 –