NHibernate映射

时间:2011-02-21 07:35:44

标签: nhibernate orm nhibernate-mapping

有人可以帮我吗?我的项目中有两个类:User和Article。它看起来像这样: enter image description here

    public class User
    {
        public virtual int UserID { set; get; }
        public virtual string Name { set; get; }
        public virtual IList<Article> Articles { set; get; }
        public User() { }
    }   

    public class Article
    {
        public virtual int ArticleID { set; get; }
        public virtual string Title { set; get; }
        public virtual string Body { set; get; }
        public virtual User User { set; get; }
        public Article() { }
    }

现在,我希望数据库中的表看起来像这样: enter image description here

我使用XML映射。请帮帮我。

3 个答案:

答案 0 :(得分:2)

您的数据库架构显示多对多关系,而实体则是多对一关系。 所以你应该决定你需要什么样的关系。有关映射的其他信息,请参阅here

答案 1 :(得分:1)

给定的ER图表明任何给定的文章可能有多个作者(用户)。在您的情况下,您仍然不需要该架构。

考虑到删除问题,如果您计划从数据库中删除任何用户行,您将最终得到多篇文章,其中一些用户ID的引用悬空,从而产生无用的用户信息。如果您只需要文章信息,只需创建与用户和文章的1对n关系。否则(如果您打算使用文章信息,即使用户被删除),我建议您保留一个已删除的标志,而不是删除该条目。

答案 2 :(得分:1)

正如Sly正确声明您可以将UserId移至Article表格

如果用户被删除,请将UserId设置为特殊用户,例如A System User 然后,此system user可以拥有任何不再分配任何用户的文章,从而保持完整性。