2016-11-04 68 views
0

我在这里有一个分层设置的问题,我无法弄清楚如何正确配置实体框架fluentapi,或者如果它甚至有可能。实体框架中的视图映射多对一的关系6流利的API

我有我的自我引用表在那里我有我的实体和父项的引用:

myEntity所(ID,姓名,的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") 
    ) 
+0

*这不起作用*你能更具体到什么不工作? –

回答

0

嗯,我想这是不可能的。

我解决它作为一个多对多的关系处理它。 该视图用作关联表。

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