Я пытаюсь понять, как лучше определить мои классы POCO, чтобы можно было использовать функцию кодирования в первую очередь 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_Email,
- User_Comment,
- User_IsApproved,
- User_LastLoginDate,
- User_LastActivityDate
Ничего уникального для пользователя (User_Email определяется как обнуляемый).Поэтому, если вы хотите, чтобы в ваших классах был пользователь, напишите обертку для MembershipUser
или просто сохраните UserID.
Спасибо, Ладислав и Серги.