我有一个包含信息文件夹的表{Id,FileName,Folder,...} - >我们称之为文件
1, Presentation, Work\Presentations
2, CV, Private
3, Report, Work
我需要在treelist控件中表示这些信息。
对于上述数据,它将是这样的:
Work //Folder
|->Presentation //Folder
|->Presentation //File
|->Report //File
Private //Folder
|->CV //File
对于这个purpouse,我做了一些课程:
TreeNode
{
...some properties
List<TreeNode> Descendants;
}
File : TreeNode
{
...
}
Folder : TreeNode
{
...
}
当我从DbContext读取“File”数据时,我在List中生成Folder + File结构,然后将此List作为数据源添加到DevExpress TreeList控件
问题是,我只需要在我的EF模型中包含这个“文件”POCO类,而不需要基类“TreeNode”中的属性
我尝试使用fluent-api为“文件”配置它 - &GT;为继承的TreeNode属性添加Ignore(x =&gt; x ...) - 但结果证明是不允许的 - &GT;然后我试图找到一种方法将TreeNode POCO类标记为“未映射” - 没有成功
然后我认为每个具体的类继承表可能是这个的解决方案(虽然我认为不推荐这种继承类型)
public BaseTypeMapping() //ctor in EntityTypeConfiguration<BaseTypeMapping>
{
.Map<DerivedType>(m=>
{
//commented because I don't need properties from base class in my database
// m.MapInheritedProperties();
m.ToTable("DerivedTypeTable");
}
)
}
在我的DbContext中,我将其定义为:
public DbSet<TreeNode> Files { get; set; }
当我想从DbContext获取所有文件时,我使用它:
var autotexts = context.Files.OfType<File>()ToList();
但是我收到错误“无效的对象名称'dbo.TreeNodes'。”所以我想实体框架也希望这个基类也映射到EF。
有没有办法让这项工作?