Я пытаюсь понять, как лучше всего определить классы POCO, чтобы иметь возможность использовать функцию Code-first в Entity Framework.
Я хочу определить некоторые отношения внешнего ключа в своих классах, между пользователем, а также между самими классами. . Например, рассмотрим следующие 3 класса:
Public class Job
{
public int JobID {get; set;}
public string JobTitle {get; set;}
public virtual ICollection<Resume> Resumes {get; set;} // Is this correct at all? How to access all resumes for a certain job? (many-to-many relationship between Job and Employee)
}
Public class Resume
{
public int EmployeeID {get; set;} // or should it be: public virtual Employee EmployeePerson?
public int JobID {get; set;} // or should it be: public virtual Job UserJob?
public DateTime EmploymentDate {get; set;}
}
public class Employee
{
public int EmployeeID {get; set;}
public int UserID{ger; set;} // or should it be: public virtual MembershipUser User?
public ICollection<Resume> Resumes {get; set;} // Is this correct at all?
}
Пользователь является пользователем членства, который находится в System.Web.Security
, который проходит аутентификацию с помощью FormsAuthentication или ActiveDirectoryAuthentication. Вопросы упоминаются в коде (в виде комментариев). Но для уточнения:
- Должен ли я определять объекты в отношениях и использовать
.Include
каждый раз, когда они мне нужны, или лучше хранить идентификаторы объектов и пытаться получить данные из этого идентификатора каждый раз, когда мне это нужно? Должен ли я использовать другой подход при работе с классомMembershipUser
вместо моих определенных классов? - Как еще можно использовать
virtual
, кроме включения ленивой загрузки? Где я должен избегать этого и где я должен его использовать?
Спасибо.
ОБНОВЛЕНИЕ: я только что протестировал определение Employee с помощью определения ublic virtual MembershipUser User
. В результате в моей таблице было добавлено 4 столбца:
- Пользователь_Электронная почта,
- User_Comment,
- Пользователь_Одобрен,
- User_LastLoginDate,
- User_LastActivityDate
Ничего уникального для пользователя (User_Email определяется как обнуляемый). Итак, если вы хотите, чтобы в ваших классах был пользователь, напишите оболочку для MembershipUser
или просто сохраните UserID.
Спасибо, Ладислав и Сергей.