【问题标题】:EF 4.1 Entity mappings for complex relationsEF 4.1 复杂关系的实体映射
【发布时间】:2011-06-16 00:06:00
【问题描述】:

我想用 EF 4.1 Code First 映射以下表格:

项目 - 可以有多个类别的项目

ItemCategories - 映射Items多对多关系的关系表Categories

Category - 一个类别,类别是类别树,ParentId 是自引用的

CategoryLink - 此表包含树的边缘


问题是如何为我的实体类创建 EF 代码优先映射,以便我可以使用 Item 上的 Categories 集合属性,同时能够在查询中使用我的所有表(尤其是关系表的联接)像这样:

//searchIds contains a list of category guids to be searched for inside the category tree
var query = from item in db.Items
            join itemCategory in db.ItemCategories on item.Id equals itemCategory.ItemId
            join category in db.Categories on itemCategory.CategoryId equals category.Id
            join categoryLink in db.CategoryLinks on category.Id equals categoryLink.ChildId
            where searchIds.Contains(categoryLink.ParentId)
            select item;

这里是带有 DbContext 的实体类(没有映射)

class TestContext : DbContext
{
    public DbSet<Category> Categories { get; set; }
    public DbSet<Item> Items { get; set; }
    public DbSet<ItemCategory> ItemCategories { get; set; }
    public DbSet<CategoryLink> CategoryLinks { get; set; }
}

public class Item
{
    public Guid Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Category> Categories { get; set; }
}

public class ItemCategory
{
    public Guid ItemId { get; set; }
    public Guid CategoryId { get; set; }
}

public class Category
{
    public Guid Id { get; set; }

    public Guid? ParentId { get; set; }
    public virtual Category Parent { get; set; }

    public string Name { get; set; }
}

public class CategoryLink
{
    public Guid ParentId { get; set; }
    public Guid ChildId { get; set; }

    public virtual Category Parent { get; set; }
    public virtual Category Child { get; set; }
}

谢谢

【问题讨论】:

    标签: join entity-framework-4.1 ef-code-first


    【解决方案1】:

    我只是先玩了一点代码,不确定这是否有帮助。但下面的帖子显示了如何创建桥接表并首先解决 EF4.1 代码的多对多问题。

    How to perform CRUD with Entity Framework Code-First?

    还有 Forcing a bridge/join table to become a many to many relationship in EF4

    【讨论】:

    • 这些帖子都不是关于我问的主题的。第二个甚至与代码无关。我遇到的问题是如何显式映射关系表(以便能够与其连接,同时仍然能够将 ICollection 引用映射到 Item 上)。
    猜你喜欢
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多