簡體   English   中英

ASP.NET MVC3 EF代碼優先-多對多關系

[英]ASP.NET MVC3 EF Code First - Many-to-many relationships

我試圖在我的MVC項目中首先使用EF代碼創建多對多關系。 我有一個方案,其中我的服務可以具有許多類別,其中可能包含許多子類別。 這一點似乎工作正常。

每個服務,類別和子類別也可以具有與其關聯的許多HelpDeskMember。 這是我在創建關聯時遇到的麻煩。 對於下面的類,我期望EF創建Service_HelpDeskMembers,Category_HelpDeskMembers和Subcategory_HelpDeskMembers表。 請有人能指導我正確的方向嗎?

PS在導航屬性中,由於我使用AJAX和JSON在Service / Category / Subcategory之間創建級聯的下拉列表,並且使用“ virtual”,因此未得到虛擬引用,因此出現循環引用錯誤。

這是我的課。

public class Service
{
    [Key]
    public int ServiceID { get; set; }

    public string Title { get; set; }
    public DateTime CreatedDate { get; set; }
    public HelpDeskMember CreatedBy { get; set; }
    public DateTime? DeletedDate { get; set; }
    public HelpDeskMember DeletedBy { get; set; }

    public ICollection<Category> Categories { get; set; }
    public ICollection<HelpDeskMember> LinesOfSupport { get; set; }
}

public class Category
{
    [Key]
    public int CategoryID { get; set; }
    [ForeignKey("Service")]
    public int ServiceID { get; set; }

    public string Title { get; set; }
    public DateTime CreatedDate { get; set; }
    public HelpDeskMember CreatedBy { get; set; }
    public DateTime? DeletedDate { get; set; }
    public HelpDeskMember DeletedBy { get; set; }

    public Service Service { get; set; }
    public ICollection<Subcategory> Subcategories { get; set; }
    public ICollection<HelpDeskMember> LinesOfSupport { get; set; }
}

public class Subcategory
{
    [Key]
    public int SubcategoryID { get; set; }
    [ForeignKey("Category")]
    public int CategoryID { get; set; }

    public string Title { get; set; }
    public DateTime CreatedDate { get; set; }
    public HelpDeskMember CreatedBy { get; set; }
    public DateTime? DeletedDate { get; set; }
    public HelpDeskMember DeletedBy { get; set; }

    public Category Category { get; set; }
    public ICollection<HelpDeskMember> LinesOfSupport { get; set; }       
}

public class HelpDeskMember
{
    public int HelpDeskMemberID { get; set; }
    public string Name { get; set; }
    public bool Admin { get; set; }
    public bool Available { get; set; }
    public DateTime? CreatedDate { get; set; }
    public DateTime? LastLogin { get; set; }
    public DateTime? DeletedDate { get; set; }
    public DateTime? DeletedBy { get; set; }

    public ICollection<Service> Services { get; set; }
    public ICollection<Category> Categories { get; set; }
    public ICollection<Subcategory> Subcategories { get; set; }
}

提前致謝。

這里的技巧是使用模型構建器創建多對多鏈接,然后它將按您期望的那樣在數據庫中起作用(帶有鏈接表)

看看這篇文章,了解有關如何進行多對多http://blogs.microsoft.co.il/blogs/gilf/archive/2011/08/01/creating-a-many-to-many-的詳細信息使用代碼映射first.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM