请建议使用EF4 (代码优先)或nHibernate?的存储库模式管理分层结构的方法/教程。
例如,假设我必须显示以下内容:
Topic
-> Comment1
-> Comment1_1
-> Comment1_2
-> Comment1_2_1什么是理想的类结构,它应该如何与ORM和存储库模式相结合?有很多关于存储库模式和EF/nHibernate的文章,但是我找不到一篇用分层结构使用它们的文章。
我对班级结构的思考:
Class Topic
{
public int ID {get;set;}
public string Topic {get;set;}
}
Class Comment
{
Public int ID {get;set;}
Public int TopicID {get;set}
Public string Comment {get;set;}
Public int ParentID {get;set;} //recursion will happen here
Public int Level {get;set;} //Can be used to bypass recursion and display topic with all comments with indention based on Level
}发布于 2012-02-04 17:06:45
可能您正在尝试将一棵树映射到关系模型。看看如何在nhibernate中映射树。
发布于 2012-02-04 17:59:59
如果每个评论都引用了父主题,那么您就不需要做更多的事情了。您将始终在应用程序逻辑中加载带有所有相关注释和遍历层次结构的主题,因为注释将具有正确配置的父级(在本例中,它还应该有依赖项的集合,以使遍历更容易)。
因此,使用这种结构的算法应该是:
TopicId )-所有EF内容在这里结束,因为您有所需的所有数据更复杂的情况是,如果您想单独处理一些注释--例如,获取某些指定注释的注释层次结构。在这种情况下,您必须使用本机SQL加载注释,并利用CTE (仅用于Server 2005和更新的公共表表达式)进行层次化查询。在@pborovik发布的文章中描述了这种方法,并且在EF的情况下非常相似。
https://stackoverflow.com/questions/9142089
复制相似问题