【发布时间】:2011-10-22 13:46:26
【问题描述】:
我正在构建一个预订系统。我有用户角色('admin'、'client'、'employee'、'student')。
每个预订必须与角色客户的用户相关联,它可能分配给角色员工的用户,也可能分配给角色学生的用户。
因此,在我的预订类中,我有 User 类型的属性,并用 [ForeignKey("AnytypeId")] 属性对它们进行了标记,以提示 EF 的关系。
我在http://blog.stevensanderson.com/2011/01/28/mvcscaffolding-one-to-many-relationships/看到过这样的代码
public class Reservation
{
public int ReservationID
{
get;
set;
}
[Required(ErrorMessage="Please provide a valid date")]
public DateTime ReservationDate
{
get;
set;
}
public DateTime ReservationEnd { get; set; }
public DateTime EntryDate
{
get;
set;
}
public DateTime UpdatedOn
{
get;
set;
}
public decimal Ammount
{
get;
set;
}
public decimal? Discount { get; set; }
[DataType(DataType.MultilineText)]
public string ServiceDetails { get; set; }
[DataType(DataType.MultilineText)]
public string Remarks { get; set; }
public String PaymentMethod { get; set; }
public string VoucherNumber { get; set; }
public int ServiceID
{
get;
set;
}
public virtual Service Service
{
get;
set;
}
public string EmployeeID { get; set; }
[ForeignKey("EmployeeID")]
public virtual User Employee { get; set; }
public string ClientID { get; set; }
[ForeignKey("ClientID")]
public virtual User Client { get; set; }
public string StudentID { get; set; }
[ForeignKey("StudentID")]
public virtual User Student { get; set; }
}
public class ReservationMap : EntityTypeConfiguration<Reservation>
{
public ReservationMap()
{
this.HasOptional(r => r.Client).WithMany().WillCascadeOnDelete(true);
this.HasOptional(r => r.Employee).WithMany().WillCascadeOnDelete(false);
this.HasOptional(r=>r.Student).WithMany().WillCascadeOnDelete(false);
}
}
现在,当我运行我的 mvc3 EF 代码时,首先使用以下 ERD 和 edmx 模型为我即时创建的应用程序数据库。
现在我遇到的几个问题: 1. 当我在视图中列出角色客户端的所有用户时,他们的预订属性始终显示为 0,即使他们是数据库中可用的预订。不知道为什么这个标有 virtual 的集合属性没有加载??
请帮我解决这个问题,这是剩下的最后一件事了。
【问题讨论】:
标签: entity-framework-4 linq-to-entities