在实体框架中映射多对一关系6流畅的api

本文关键字:api 关系 多对一 实体 框架 映射 | 更新日期: 2023-09-27 18:16:13

我在这里有一个分层设置的问题,我不能得到我的头如何正确配置实体框架fluentapi,或者如果它甚至是可能的。

我有我的自引用表,其中我有我的实体和对父项的引用:

MyEntity(Id, Name, ParentId)

我得到了我可以遍历的树,这很好。我创建了一个视图,其中每个MyEntityId都是根实体的MyEntityId。

MyView (EntityId EntityRootId)

我在MyEntity中创建了一个虚拟属性,可以直接遍历到视图上的根元素。它工作,只要我有一个步骤之间,我给视图自己的实体(MyEntityRoot)。

MyEntity> MyEntityRoot>MyEntity

现在我想去掉这个间接,直接从MyEntity> MyEntity

基本上它的工作方式就像两个一对一的关系,但我希望它表现为一个多对一的关系,中间有一个映射表。映射表是只读的,只是为了方便导航。

这可能吗?还是说,即使我不想让它出现在中间,我也要把它固定在中间?

会是什么样子?我试过类似的方法,但是行不通。

modelBuilder
    .Entity<MyEntity>()
    .HasRequired(e => e.Root)
    .WithMany()
    .Map(m => 
        m.ToTable("MyView");
        m.MapKey("EntityRootId")
    )

在实体框架中映射多对一关系6流畅的api

嗯,我想这是不可能的。

我通过将其作为多对多关系处理来解决它。视图作为关联表。

剩下的唯一问题是我必须像MyEntity. roots . first()代替MyEntity。