ASP.Net MVC3 EF4.1을 사용하는 프로젝트와 외래 키를 통한 테이블 간의 관계에서 작업하고 있습니다. 나는 데이터베이스 접근법을 사용하고 있으며 달력, 달력 사용자 및 사용자라는 세 개의 테이블을 가지고있다. 캘린더에는 많은 사용자가 있고 사용자는 많은 캘린더를 가질 수 있습니다.Mvc3 데이터베이스의 첫 번째 관계
누군가가 캘린더를 만들 때 캘린더에 액세스 할 수있는 사용자 수를 선택해야합니다. 하지만 지금은 내가 혼란 스러울 때 컨트롤러의 데이터베이스에 변경 사항을 저장하려고합니다. 생성 된 클래스에는 외래 키를 어떻게 든 나타내는 가상 ICollection이 있습니다. 하지만 어떻게 처리 할 수 있을지 모르겠다. 어떻게 작동해야합니까? 가상 ICollections에 변경 사항을 추가 할 수 있어야하고 db.SaveChanges()를 수행하면됩니다. 그 자체로 작동하거나 수동으로 처리 할 수 있습니까?
수동으로 처리해야한다면 사용자를 추가하고 일정을 추가 한 다음 CalendarUsers 테이블에 키를 추가하여 함께 바인딩해야합니까? OnModelCreating 메서드에 코드를 입력하여 관계를 명확히 한 코드의 예제를 처음 보았습니다.하지만 먼저 Database를 사용할 때는 throw new UnintentionalCodeFirstException();
? 당신이 아마도 나를 위해 그것을 명확히 할 수 있길 바래요.
public partial class Calendar
{
public Calendar()
{
this.CalendarUsers = new HashSet<CalendarUser>();
}
public int CalendarId { get; set; }
public string CalendarTitle { get; set; }
public string CalendarDescription { get; set; }
public long UserId { get; set; }
public virtual User User { get; set; }
public virtual ICollection<CalendarUser> CalendarUsers { get; set; }
}
public partial class CalendarUser
{
public int CalendarUserId { get; set; }
public int CalendarId { get; set; }
public long UserId { get; set; }
public Nullable<bool> IsAdmin { get; set; }
public virtual Calendar Calendar { get; set; }
public virtual User User { get; set; }
}
public partial class User
{
public User()
{
this.Calendars = new HashSet<Calendar>();
this.CalendarUsers = new HashSet<CalendarUser>();
}
public long UserId { get; set; }
public string Name { get; set; }
public virtual ICollection<Calendar> Calendars { get; set; }
public virtual ICollection<CalendarUser> CalendarUsers { get; set; }
}
당신이 만든 클래스를 보여줄 수 다음
CalendarUser
의 새 인스턴스 외부 키 속성을 설정하여Calendar
및User
기존의? (모든 세부 사항이 아니라 단지 클래스와 키와 외래 키 프로퍼티를 참조하는 프로퍼티입니다.) 중요한 질문은'CalendarUsers'를위한 별도의 클래스를 가지고 있거나 단지 (many-to-many 조인) 모델에 클래스가없는 테이블. – SlaumaCalendarUsers는 별도의 클래스입니다. 어쩌면 좋은 방법이 아닐까요? – Janspeed
'CalendarUser' 클래스는 OK입니다. IsAdmin 플래그 때문에 필요합니다. 좀 더 혼란스러운 것은'Calendar.User'와'User.Calendars' 사이에 추가적인 일대 다 관계가 있다는 것입니다. 왜 이걸 가지고 있니? 관계는 다 대다 (many-to-many) 관계이며 모델 ('Calendar.CalendarUsers' 및'User.CalendarUsers')에도 있습니다. 그러나이 추가적인 일대 다 관계의 목적은 무엇입니까? – Slauma