İki nesne arasında bir ilişki atama üzerinde çalışıyorum, ancak eşleme üzerinde bir hata alıyorum. Tek bir ilişki Varlık Çerçeve yabancı anahtar eşleme
Ben şu nesneler: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");
}
}
aşağıdaki hatayı alıyorum: yabancı anahtar karşılaştırma almak için bir çözüm bulmak için etrafında arandı ve başarısız olmuş
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'
ManagerUser
, ID
özelliği yerine Staff
içinde UserCode
özelliği ile.
, sen kullanici_kodu belirten vardır Personeli için ForeignKey ... –
Sen olamaz EF6'da bunu yapın. EF6, FK'yi yalnızca PK'nin ilişkilerin “asıl” ı oluşturabilir. –