먼저 동일한 엔티티 유형 코드의 다중 일대 다 관계

Moarra

2 개의 일대 다 관계 (2 개의 목록)가있는 엔티티를 정의하는 데 문제가 있습니다.

public class Calendar
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public Guid ID { get; set; }


    public virtual IList<Appointment> FreeSlots { get; set; }
    public virtual IList<Appointment> AppointmentsList { get; set; }
    ...
}

public class Appointment
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int AppointmentID { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
    public String Type { get; set; }       
    public String Info { get; set; }
    public Guid CalendarID { get; set; }       
    public virtual Calendar Calendar { get; set; }
 }

그리고 코드 우선 코드 :

modelBuilder.Entity<Appointment>().HasKey(u => new {u.AppointmentID, u.CalendarID });
        modelBuilder.Entity<Appointment>().HasRequired(u => u.Calendar).WithMany(c => c.FreeSlots).HasForeignKey(f => f.CalendarID).WillCascadeOnDelete(true);
        modelBuilder.Entity<Appointment>().HasRequired(u => u.Calendar).WithMany(c => c.AppointmentsList).HasForeignKey(f => f.CalendarID).WillCascadeOnDelete(true);

캘린더가 삭제되면 약속을 삭제하기를 원하기 때문에 약속에 두 개의 PK가 있습니다.

FreeSlot에 새 약속을 추가하려고하면 다음 오류가 발생합니다. 관계에 대한 외래 키 속성을 노출하지 않는 엔터티를 저장하는 동안 오류가 발생했습니다. 단일 엔터티를 예외의 소스로 식별 할 수 없기 때문에 EntityEntries 속성은 null을 반환합니다.

이 매핑도 행운없이 시도했습니다. 오류 0040 : 유형 Calendar_FreeSlots가 네임 스페이스 Project.DAL (Alias ​​= Self)에 정의되어 있지 않습니다.

modelBuilder.Entity<Appointment>().HasKey(u => new {u.AppointmentID, u.CalendarID });           
        modelBuilder.Entity<Calendar>().HasMany(c => c.FreeSlots).WithRequired(c => c.Calendar).HasForeignKey(c => c.CalendarID).WillCascadeOnDelete();
        modelBuilder.Entity<Calendar>().HasMany(c => c.AppointmentsList).WithRequired(c => c.Calendar).HasForeignKey(c => c.CalendarID).WillCascadeOnDelete();

문제는 동일한 유형의 엔티티에 대해 두 개의 일대 다 관계가 있지만 올바르게 만드는 방법을 모른다는 것입니다.

빈민굴

매핑의 실수는 Appointment.Calendar두 개의 다른 관계에 대해 두 번 사용한다는 것 입니다. 그건 불가능하다. 두 번째 쌍의 FK 및 탐색 속성이 필요합니다 Appointment(또는 역 속성없이 하나의 관계를 매핑).

modelBuilder.Entity<Calendar>()
    .HasMany(c => c.FreeSlots)
    .WithRequired(c => c.Calendar1)
    .HasForeignKey(c => c.Calendar1ID)
    .WillCascadeOnDelete(false);

modelBuilder.Entity<Calendar>()
    .HasMany(c => c.AppointmentsList)
    .WithRequired(c => c.Calendar2)
    .HasForeignKey(c => c.Calendar2ID)
    .WillCascadeOnDelete(true);

(적어도 하나의 관계에 대해 계단식 삭제를 비활성화해야합니다. 그렇지 않으면 다중 계단식 삭제 예외가 발생합니다.)

그러나 나는 당신이 실제로 하나의 관계와 수집을 가져야 하고 속성 과 같은 Calendar.Appointments일종의 지위를 가져야한다고 생각 합니다. 그런 다음 항상을 사용하여 캘린더 항목의 여유 슬롯을 추출 할 수 있습니다.Appointmentbool IsFreecalendar.Appointments.Where(a => a.IsFree)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

EF 코드 우선 : 다중 다 대일 관계가있는 엔터티 유형

분류에서Dev

두 개의 다 대일 관계가있는 엔티티 관계

분류에서Dev

Core Data에서 동일한 엔티티 간의 일대 다 관계

분류에서Dev

동일한 다른 엔티티에 대해 2 개의 ManyToOne 관계를 갖는 하나의 엔티티

분류에서Dev

로 엔티티를 저장 일대 다 관계

분류에서Dev

Hibernate에서 동일한 엔티티에 대한 다중 연관 유지

분류에서Dev

하나의 엔티티가 동일한 엔티티 유형의 2 개를 참조하는 엔티티 관계?

분류에서Dev

Django, Abstract 엔티티와의 다 대일 관계

분류에서Dev

양방향 관계로 중첩 된 엔티티 (일대 다) 유지

분류에서Dev

동일한 엔터티에 대한 여러 일대 다 관계

분류에서Dev

Sql Server에서 일대 다 관계를 정의하고 먼저 엔티티 코드 에서이 관계의 한쪽을 정의하고 사용하는 것이 가능합니까?

분류에서Dev

EF Core : 동일한 엔터티 간의 여러 다 대다 관계

분류에서Dev

PostgreSQL 엔티티 프레임 워크와 일대 다 관계의 한 쪽 정의

분류에서Dev

하나의 특정 엔티티와 일대 다 관계를 갖는 여러 엔티티

분류에서Dev

엔티티 클래스와 열거 형 조회 클래스 간의 일대 다 관계

분류에서Dev

EF 코드는 먼저 일대 다 관계를 만듭니다.

분류에서Dev

Entity Framework 코드 우선 관계 : 일대 다 대 여러 엔터티

분류에서Dev

다른 스키마에서 동일한 테이블을 가진 엔터티 매핑 Entity Framework 6 코드 먼저

분류에서Dev

asp.NET MVC 엔티티 유효성 검사는 동일한 유형의 다른 엔티티에 따라 다릅니다.

분류에서Dev

다 대다 관계 코드 먼저

분류에서Dev

다 대다 관계 코드 먼저

분류에서Dev

JPA + 다 대일 관계 대상 엔티티가 테이블에 저장됩니다.

분류에서Dev

엔티티 프레임 워크 6 코드 첫 번째 일대 다 선택적 관계 제거 하위 문제

분류에서Dev

NSPredicate : 일대 다 관계 CoreData의 모든 엔티티에 대한 속성 값 '추가'

분류에서Dev

Entity Framework Core에서 동일한 엔터티와 다 대다 관계

분류에서Dev

동일한 엔티티와 다 대다 연관을위한 Hibernate 카운트 NamedQuery

분류에서Dev

양측에 필요한 일대 다 관계 엔티티 프레임 워크

분류에서Dev

Hibernate : 엔티티로서의 다 대다 관계 테이블

분류에서Dev

Grails에 일대 다 관계를 가진 두 개의 엔티티가 있습니다.

Related 관련 기사

  1. 1

    EF 코드 우선 : 다중 다 대일 관계가있는 엔터티 유형

  2. 2

    두 개의 다 대일 관계가있는 엔티티 관계

  3. 3

    Core Data에서 동일한 엔티티 간의 일대 다 관계

  4. 4

    동일한 다른 엔티티에 대해 2 개의 ManyToOne 관계를 갖는 하나의 엔티티

  5. 5

    로 엔티티를 저장 일대 다 관계

  6. 6

    Hibernate에서 동일한 엔티티에 대한 다중 연관 유지

  7. 7

    하나의 엔티티가 동일한 엔티티 유형의 2 개를 참조하는 엔티티 관계?

  8. 8

    Django, Abstract 엔티티와의 다 대일 관계

  9. 9

    양방향 관계로 중첩 된 엔티티 (일대 다) 유지

  10. 10

    동일한 엔터티에 대한 여러 일대 다 관계

  11. 11

    Sql Server에서 일대 다 관계를 정의하고 먼저 엔티티 코드 에서이 관계의 한쪽을 정의하고 사용하는 것이 가능합니까?

  12. 12

    EF Core : 동일한 엔터티 간의 여러 다 대다 관계

  13. 13

    PostgreSQL 엔티티 프레임 워크와 일대 다 관계의 한 쪽 정의

  14. 14

    하나의 특정 엔티티와 일대 다 관계를 갖는 여러 엔티티

  15. 15

    엔티티 클래스와 열거 형 조회 클래스 간의 일대 다 관계

  16. 16

    EF 코드는 먼저 일대 다 관계를 만듭니다.

  17. 17

    Entity Framework 코드 우선 관계 : 일대 다 대 여러 엔터티

  18. 18

    다른 스키마에서 동일한 테이블을 가진 엔터티 매핑 Entity Framework 6 코드 먼저

  19. 19

    asp.NET MVC 엔티티 유효성 검사는 동일한 유형의 다른 엔티티에 따라 다릅니다.

  20. 20

    다 대다 관계 코드 먼저

  21. 21

    다 대다 관계 코드 먼저

  22. 22

    JPA + 다 대일 관계 대상 엔티티가 테이블에 저장됩니다.

  23. 23

    엔티티 프레임 워크 6 코드 첫 번째 일대 다 선택적 관계 제거 하위 문제

  24. 24

    NSPredicate : 일대 다 관계 CoreData의 모든 엔티티에 대한 속성 값 '추가'

  25. 25

    Entity Framework Core에서 동일한 엔터티와 다 대다 관계

  26. 26

    동일한 엔티티와 다 대다 연관을위한 Hibernate 카운트 NamedQuery

  27. 27

    양측에 필요한 일대 다 관계 엔티티 프레임 워크

  28. 28

    Hibernate : 엔티티로서의 다 대다 관계 테이블

  29. 29

    Grails에 일대 다 관계를 가진 두 개의 엔티티가 있습니다.

뜨겁다태그

보관