데이터베이스 첫 번째 방법으로 응용 프로그램을 작성하기 위해 Entity Framework 6.1을 사용하려고합니다.하나의 속성을 엔티티 프레임 워크와 다중 관계에 매핑하는 방법은 무엇입니까?
로컬 속성으로 기본값 Key
인 Id
을 사용하지 않는 동안 일대 다 관계를 구축하는 방법에 의아해합니다.
여기
public class UserToClient
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[ForeignKey("ViewClient")]
public int ClientId { get; set; }
[ForeignKey("Team")]
public int DefaultTeamId { get; set; }
public bool IsActive { get; set; }
public virtual ViewClient ViewClient { get; set; }
public virtual Team Team { get; set; }
public virtual ICollection<Team> Teams { get; set; }
}
내
UserToClient
모델 내에서 내 두 번째 모델
public class Team
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public bool IsActive { get; set; }
public string Name { get; set; }
[ForeignKey("ViewClient")]
public int ClientId { get; set; }
public virtual ICollection<ViewClient> ViewClients { get; set; }
public virtual UserToClient UserToClient { get; set; }
}
먼저 다음의 두 가지 모델이며, 한 I, I는 한 UserToClient
는이 일대 관계를 "만들려면 많은 Team
"
최종 결과는 다음과 같이 할 수 있습니다.
나는 "엔티티가 외부"이SELECT *
FROM [UserToClient] AS r
LEFT JOIN [Team] AS t ON t.ClientId = r.ClientId
문제 같은 것을 할 것입니다 수동으로 쿼리를 작성하는 것이었다 경우
using(var connection = new AppContext()) { var userToClients = connection.UserToClients .Include(x => x.Team) .Include(x => x.Teams) .ToList(); //Do something with userToClients //Do something with userToClients.Team //Do something with each team foreach(var team in userToClients.Teams) { //Do something with 'team' } }
는의 관계는 속성을 가리 키도록해야
는 ClientId
하지라고 기본 키 Id
.
엔티티에서 현재 이와 같은 질의를 생성 중입니다. Id
에서 ClientId
으로 변경하고 싶습니다.
SELECT *
FROM [UserToClient] AS r
LEFT JOIN [Team] AS t ON t.Id = r.ClientId
이 Id
기본 키는 것을 이해하는 것이 중요하지만,이 경우에 나는 차 하나가 아닌 키에 가입하려는.
어떻게이 문제를 해결할 수 있습니까?
시도
나는이
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Team>()
.HasRequired(x => x.UserToClient)
.WithMany(x => x.Teams)
.HasForeignKey(f => f.ClientId);
}
나는 지역 때에 프로퍼티는 그 관계를 알려줄 수있는 방법이 필요
ClientId
과 같은 컨텍스트 클래스의 OnModelCreating
방법을 재정 의하여이 문제를 해결하기 위해 시도 아니요 Id
어떻게 해결할 수 있습니까?
나는 데이터베이스를 처음 접근 방식을 사용하고 있습니다. 그러나 내 자신의 모델을 작성하여 주변 자동 생성 코드를 줄일 수 있습니다. 내가 어떻게 그럴 수 있니? – Jaylen
게시 한 예는 코드 첫 번째 모델입니다. 유창한 API를 사용하여'DbContext.OnModelCreating (DbModelBuilder)'함수에서 관계를 지정합니다 – Bwolfing