我正在構建預訂系統。我有角色的用戶('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,即使它們是在數據庫中可用的預訂。我不知道爲什麼這個標記爲虛擬的集合屬性沒有加載?
請讓我在這裏幫助我,這是剩下的最後一件事。
你能告訴我這是否可能嗎? 公共類ReservationMap:EntityTypeConfiguration { 公共ReservationMap() { HasOptional(R => r.Client).WithMany(U => u.Reservations).WillCascadeOnDelete(真); HasOptional(r => r.Employee).WithMany(u => u.Reservations).WillCascadeOnDelete(false); HasOptional(r => r.Student).WithMany(u => u.Reservations).WillCascadeOnDelete(false); } } 這樣每種類型的用戶都可以保留其預訂? –
najam
@najam是的。你嘗試過嗎? – Eranga
我試過代碼並得到以下錯誤 指定的模式無效。錯誤: (89,6):錯誤0040:類型Reservation_Employee未在名稱空間CRS.Domain.Concrete(Alias = Self)中定義。 (90,6):錯誤0040:類型Reservation_Client未在名稱空間CRS.Domain.Concrete(Alias = Self)中定義。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。 – najam