我想了解定义我的POCO类能够使用实体框架代码优先功能的最佳方法。
我想在我的类中,用户之间以及类之间定义一些外键关系。例如,考虑以下3类:实体框架代码优先 - 定义与MembershipUser的关系
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
每次我需要他们还是更存储对象的ID,并尝试每次我需要时间从ID获取数据的时间?在处理MembershipUser
类而不是我定义的类时,我应该采用不同的方法吗? virtual
除了启用延迟加载之外还有什么其他用途?我应该在哪里避免它,我应该在哪里使用它?
谢谢。
UPDATE:我刚刚测试过定义员工的ublic virtual MembershipUser User
定义。其结果是加4列在我的表:
- USER_EMAIL,
- USER_COMMENT,
- User_IsApproved,
- User_LastLoginDate,
- User_LastActivityDate
没有什么独特的用户(USER_EMAIL被定义为可空)。所以,如果你想让你的用户在你的课堂上,写一个MembershipUser
的包装或只是存储用户ID。
谢谢Ladislav和Sergi。
谢谢Sergi,没有注意到MembershipUser没有默认的构造函数。 – Kamyar 2011-04-12 12:14:57
@Kaymar - 不客气。顺便说一句,我说我的头顶,所以不要听我的话。检查! :) – 2011-04-12 12:26:22
@Kaymar - 刚刚检查:它确实有一个默认的构造函数,但它是'protected',所以对于所有目的和意图,它没有;) – 2011-04-12 12:27:52