用于分层数据的EF Fluent API

时间:2016-02-22 13:22:14

标签: c# entity-framework entity-framework-6

我想在数据库中存储分层数据,并需要帮助如何配置模型。 每个用户还有一组分层数据。 数据存储在数据库中后,很少更改。

我计划使用的数据库如下:

User
    Id          int


TreeEntity
    Id          int
    UserId      int
    ParentId    int

TreeEntity.UserIdUser.Id的引用 TreeEntity.ParentId引用TreeEntity.Id。如果未设置ParentId,则它是树中的根。

我考虑过尝试配置EF,以便将数据映射到以下类

User
    // All TreeEntity that have TreeEntity.UserId==User.Id
    // Desirable, but not necessary
    //   ICollection<TreeEntity>        AllEntitiesForUser{get; set;}

    // The roots of the tree for this User. 
    // All TreeEntity that have TreeEntity.UserId==User.Id and TreeEntity.Parent==0
    ICollection<TreeEntity>     Tree {get;set;}

TreeEntity
    // Reference to the User 
    User                        User {get;set;}
    // Reference to the parent
    TreeEntity                  Parent {get;set;}
    // List of all children
    ICollection<TreeEntity>     Children {get;set;}

到目前为止我所取得的成就如下

modelBuilder.Entity<User>()
    .HasMany(d => d.Tree)
    .WithRequired(d => d.User);

modelBuilder.Entity<TreeEntity>()
    .HasMany(d => d.Children)
    .WithOptional(d => d.Parent);

这显然不正确,但我真的不知道应该怎么做。如果可能的话?

0 个答案:

没有答案