EF 4.1 CF Fluent API 映射问题

发布于 2024-11-17 11:46:17 字数 1162 浏览 6 评论 0原文

我是 Fluent API 的新手。我有一个遗留数据库,目前无法更改。简而言之,这就是我需要实现的目标:

public class ItemCategory
{
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Item> Items { get; set; }
}

public class Item
{
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<ItemCategory> ItemCategories { get; set; }
    public virtual ICollection<Item> RelatedItems { get; set; }

}

项目可以属于许多类别,RelatedItems 可以属于与当前项目不同的类别(可能没有任何相关项目),现有的联接表如下所示:

ItemCategoriesItems (ID,ItemCategoryID,ItemID)
RelatedItemCategoriesItems (ID,ItemCategoriesItemsID,RelatedItemCategoriesItemsID)

希望很明显上面的相关项目连接表包含项目类别连接表的 2 个外键 - 一个指向当前项目,另一个指向相关项目。目前我的 onModelCreating 代码有:

modelBuilder.Entity<ItemCategory>()
    .HasMany(c => c.Items)
    .WithMany(set => set.ItemCategories)
    .Map(mc =>
    {
        mc.ToTable("ItemCategoriesItems","testdb");
        mc.MapLeftKey("ItemCategoryID");
        mc.MapRightKey("ItemID");
    });

... 这使类别/项目正常工作,但我坚持如何获取相关项目。

非常感谢任何帮助!

I'm new to the fluent API. I have a legacy database which I can't alter at the moment. Simply, this is what I need to achieve:

public class ItemCategory
{
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Item> Items { get; set; }
}

public class Item
{
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<ItemCategory> ItemCategories { get; set; }
    public virtual ICollection<Item> RelatedItems { get; set; }

}

Items can be in many categories, RelatedItems can be in different categories to the current Item (which may not have any related items), the existing join tables look like this:

ItemCategoriesItems (ID,ItemCategoryID,ItemID)
RelatedItemCategoriesItems (ID,ItemCategoriesItemsID,RelatedItemCategoriesItemsID)

Hopefully it's obvious that the related items join table above contains 2 foreign keys to the item categories join table - one pointing to the current item and the other to the related item. Currently my onModelCreating code has:

modelBuilder.Entity<ItemCategory>()
    .HasMany(c => c.Items)
    .WithMany(set => set.ItemCategories)
    .Map(mc =>
    {
        mc.ToTable("ItemCategoriesItems","testdb");
        mc.MapLeftKey("ItemCategoryID");
        mc.MapRightKey("ItemID");
    });

... which gets the categories/items working but I'm stuck on how to get the RelatedItems.

Any help greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文