gpt4 book ai didi

entity-framework - Entity Framework Code First - 单类多对多

转载 作者:行者123 更新时间:2023-12-02 00:34:54 25 4
gpt4 key购买 nike

我有一个导航菜单提供程序,我正尝试使用 MenuItem 对象将其移至 EF Code First(EF4、CPT5)。与其他任何事情相比,这更像是一种练习,可以轻松地与 EF Code First 建立不同的关系。

我的 MenuItem 有一个名为 SubMenuItems 的字段,它是 MenuItem 的集合。当我使用 EF Code First(不修改类)时,为 MenuItems 创建的表会为父菜单项添加一列。菜单将正确显示,但这会消除使一个菜单项出现在多个子菜单中的任何能力。告诉 EF Code First 我希望每个 MenuItem 都是独立项并创建另一个表以将菜单项的 SubMenuItem 链接到其他 MenuItem 的正确方法是什么?

public class MenuItem
{
public int ID { get; set; }
public virtual SubMenuItems { get; set; }
public string Text { get; set; }
public string Controller { get; set; }
public string Action { get; set; }
public bool IsRoot { get; set; }
public bool RequiresAuthentication { get; set; }
public virtual ICollection<MenuPermission> RequiredPermissions { get; set; }
public bool HiddenIfAuthenticated { get; set; }
public int DisplayOrder { get; set; }
}

...

public class MyDbContext : DbContext
{
public DbSet<MenuItems> MenuItems { get; set; }
public DbSet<MenuItemPermission> MenuItemPermissions { get; set; }
...
}

我试图覆盖 OnModelCreating,但每次尝试都以失败告终,或者在我没有触及 OnModelCreating 的情况下做完全相同的事情。我确定我只是“做错了”。

谢谢!

最佳答案

您需要为 MenuItem 实体设置多对多自引用关联,以便每个 MenuItem 可以有多个父项:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MenuItem>()
.HasMany(m => m.SubMenuItems)
.WithMany();

}

关于entity-framework - Entity Framework Code First - 单类多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com