繁体   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