在 entity framework 6 fluent api 中映射多对一关系

Mapping a many to one relationship over a view in entity framework 6 fluent api

我对这里的分层设置有疑问,我不知道如何使用 entity framework fluentapi 正确配置它,或者如果它可能的话。

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

MyEntity(Id, Name, ParentId)

我得到了我可以遍历的树,效果很好。 我做了一个视图,其中每个 MyEntityId 都有根实体的 MyEntityId。

MyView(EntityId, EntityRootId)

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

MyEntity > MyEntityRoot > MyEntity

现在我想删除该间接寻址并直接从 我的实体 > 我的实体

基本上它的工作方式类似于两个一对一的关系,但我希望它表现为多对一的关系,中间有一个映射 table。 映射 table 是只读的,仅用于轻松导航。

这可能吗?或者我是否必须坚持中间的实体,即使我不想在那里?

它会是什么样子? 我试过类似的东西,但那不起作用。

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

嗯,我想这是不可能的。

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

唯一剩下的问题是我必须访问它 MyEntity.Roots.First() 而不是 MyEntity.Root,尽管总是只有一个元素。