저는 EF 코드 첫 번째 모델의 초보자에 지나지 않습니다. 현재 레거시 MS SQL 데이터베이스에 매핑 된 두 개의 POCO 클래스가 제공됩니다. 그것들은 일대 다 관계를 설정하는 복합 외래 키와 관련이있다. 실제로는 일대일 관계이므로 POCO 객체에서 해당 탐색 속성을 사용하고 유창한 API로 매핑하고 싶습니다. 여기 내 예입니다유창한 API를 사용하여 레거시 데이터베이스에서 일대일 관계로 복합 외래 키를 설정하십시오.
public partial class Answer
{
//primary key
public int id { get; set; }
//foreign keys
public int question { get; set; }
public int assignedForm { get; set; }
//simple fields
public short state { get; set; }
public int author { get; set; }
//navigation property
public virtual AssignedQuestion AssignedQuestion { get; set; }
}
public partial class AssignedQuestion
{
// primary keys
public int id { get; set; }
public int assignedForm { get; set; }
//simple field
public string content { get; set; }
//navigation property
//public virtual ICollection<Answer> Answers { get; set; }
public virtual Answer Answer { get; set; }
}
나는 일대 다 관계를하고 싶어하면 나는 것 간단히 주석 "답변"를 수집하고 있습니다 유창함 API 매핑 :
modelBuilder.Entity<AssignedQuestion>()
.HasKey(q => new { q.id, q.assignedForm });
modelBuilder.Entity<Answer>()
.HasRequired(a => a.AssignedQuestion)
.WithMany(aq=>aq.Answers)
.HasForeignKey(a => new { a.question,a.assignedForm});
내 목표는 함께 가야하는 것입니다 일대일의 관계와 같은 유창함 API와 AssignedQuestion에 "대답"속성을 사용
modelBuilder.Entity<AssignedQuestion>()
.HasKey(q => new { q.id, q.assignedForm });
modelBuilder.Entity<Answer>()
.HasRequired(a => a.AssignedQuestion)
.WithOptional(aq => aq.Answer);
//.HasForeignKey(a => new { a.question, a.assignedForm });
문제는 내가 (이전의 예에서와 같이) 정확히 외래 키 필드를 지정할 수 있으며 주석 HasFore ignKey 호출. 이 경우 EF는 응답 테이블의 "question"및 "assignedForm"대신 "AssignedQuestion_ID"및 "AssignedQuestion_AssignedForm"필드를 사용하여 테이블을 조인하려고합니다. 필드 이름을 변경하는 것 외에 Fluent API에 대한 해결책이 있습니까?