在 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,尽管总是只有一个元素。
我对这里的分层设置有疑问,我不知道如何使用 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,尽管总是只有一个元素。