我想在数据库中存储分层数据,并需要帮助如何配置模型。 每个用户还有一组分层数据。 数据存储在数据库中后,很少更改。
我计划使用的数据库如下:
User
Id int
TreeEntity
Id int
UserId int
ParentId int
TreeEntity.UserId
对User.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);
这显然不正确,但我真的不知道应该怎么做。如果可能的话?