【问题标题】:Mapping a many to one relationship over a view in entity framework 6 fluent api在实体框架6流利的api中映射多对一关系
【发布时间】:2016-11-12 23:17:30
【问题描述】:

我在这里遇到了分层设置的问题,我不知道如何使用实体框架 fluentapi 正确配置它,或者是否有可能。

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

MyEntity(Id, Name, ParentId)

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

MyView(EntityId, EntityRootId)

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

我的实体 > 我的实体根 > 我的实体

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

基本上它就像两个一对一的关系,但我希望它表现得像一个多对一的关系,并且在两者之间有一个映射表。 映射表是只读的,仅用于方便导航。

有可能吗?还是我必须坚持中间的实体,即使我不希望它在那里?

它会是什么样子? 我尝试了类似的方法,但它不起作用。

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

【问题讨论】:

  • 那行不通您能否更具体地说明什么行不通?

标签: c# entity-framework ef-fluent-api


【解决方案1】:

好吧,我想这是不可能的。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多