我有型号类别:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
我想创建一个像这样的新模型DependencyCategory来存储多对多的子父关系。
public class DependencyCategory
{
public int Id { get; set; }
public Category Child { get; set; }
public Category Parent { get; set; }
}
如何在类别模型中创建与ICollection<DependencyCategory>
子女,父母的现在关系?例如,我想要访问一个类别父母来查看所有孩子,或者是否是孩子看到所有父母可用。
答案 0 :(得分:0)
根据我的理解,您的课程应该像这样定义。
public class Category
{
public int Id {get; set; }
public string Name {get; set; }
public string Description {get; set; }
public List<Category> ParentCategories {get; set; }
public List<Category> ChildCategories {get; set; }
}
public class CategoryRelationships
{
public int ParentCategoryId {get; set; }
public int ChildCategoryId {get; set; }
}
我没有包含所有的管道,因为Code-First不是我的强项,但它应该指向正确的方向并稍微改善您的数据库结构。请注意,CategoryRelationship
类定义了您的关系,在ParentCategoryId
和ChildCategoryId
上添加了复合主键,您不需要单独的Id列,同时还要确保相同的两个类别不能连接两次。
希望它有所帮助。
答案 1 :(得分:0)
HasRequired(a => a.ParentProduct)
.WithMany(b => b.ChildProducts)
.HasForeignKey(c => c.ParentId) // FK_RelatedProductParentID
.WillCascadeOnDelete(false);
HasRequired(a => a.ChildProduct)
.WithMany(b => b.ParentProducts)
.HasForeignKey(c => c.ChildId); // FK_RelatedProductChildID
public class CategoryDependency
{
[Key, Column(Order = 0)]
public int ParentId { get; set; } // ParentID
[Key, Column(Order = 1)]
public int ChildId { get; set; } // ChildID
// Foreign keys
public virtual Product ParentProduct { get; set; } // FK_RelatedProductParentID
public virtual Product ChildProduct { get; set; } // FK_RelatedProductChildID
}
public class Product
{
[Key]
public int ProductId { get; set; } // ProductID (Primary key)
public string ProductName { get; set; } // ProductName
// Reverse navigation
public virtual ICollection<RelatedProduct> ParentProducts { get; set; } // RelatedProduct.FK_RelatedProductChildID
public virtual ICollection<RelatedProduct> ChildProducts { get; set; } // RelatedProduct.FK_RelatedProductParentID
}