NHibernate映射
有人能帮我吗?我的项目中有两个类:User和Article。看起来是这样的:NHibernate映射,nhibernate,orm,nhibernate-mapping,Nhibernate,Orm,Nhibernate Mapping,有人能帮我吗?我的项目中有两个类:User和Article。看起来是这样的: 公共类用户 { 公共虚拟int用户标识{set;get;} 公共虚拟字符串名称{set;get;} 公共虚拟IList项目{set;get;} 公共用户(){} } 公共类文章 { 公共虚拟int ArticleID{set;get;} 公共虚拟字符串标题{set;get;} 公共虚拟字符串体{set;get;} 公共虚拟用户用户{set;get;} 公共物品(){} } 现在,我希望数据库中的表如下所示:
公共类用户
{
公共虚拟int用户标识{set;get;}
公共虚拟字符串名称{set;get;}
公共虚拟IList项目{set;get;}
公共用户(){}
}
公共类文章
{
公共虚拟int ArticleID{set;get;}
公共虚拟字符串标题{set;get;}
公共虚拟字符串体{set;get;}
公共虚拟用户用户{set;get;}
公共物品(){}
}
现在,我希望数据库中的表如下所示:
我已经使用了XML映射。请帮助我。您的数据库模式显示多对多关系,而实体是多对一的。
所以你应该决定你需要什么样的关系。有关映射的其他信息您可以找到您的DB模式显示多对多关系,而实体是多对一的。
所以你应该决定你需要什么样的关系。您可以找到的有关映射的其他信息给定的ER图说明任何给定的文章可能有多个作者(用户)。在您的情况下,仍然不需要该模式
考虑到删除问题,如果您计划从数据库中删除任何用户行,您将得到多个具有某些用户ID的文章,这些用户ID的引用悬空,从而产生无用的用户信息。如果您只需要文章信息,只需与用户和文章建立1对n的关系。否则(如果您打算对其用户使用文章信息,甚至用户被删除),我建议保留删除标志,而不是删除条目。给定的ER图表说明任何给定的文章可能有多个作者(用户)。在您的情况下,仍然不需要该模式
考虑到删除问题,如果您计划从数据库中删除任何用户行,您将得到多个具有某些用户ID的文章,这些用户ID的引用悬空,从而产生无用的用户信息。如果您只需要文章信息,只需与用户和文章建立1对n的关系。否则(如果您打算对其用户使用文章信息,甚至用户被删除),我建议保留删除标志,而不是删除条目。正如
Sly
正确指出的那样,您可以将UserId
移动到article
表中
如果用户被删除,则将用户ID
设置为特殊用户,例如系统用户
该
系统用户
可以拥有不再分配任何用户的任何文章,从而保持完整性 正如Sly
正确指出的那样,您可以将UserId
移动到Article
表中
如果用户被删除,则将用户ID
设置为特殊用户,例如系统用户
该
系统用户
可以拥有不再分配任何用户的任何文章,从而保持完整性 我希望DB关系和那个ERD图完全一样,我希望表关系和那个ERD图完全一样,因为一篇文章的所有者只能是一个用户。删除用户后,他的文章仍然存在于数据库中。您只需将UserID移动到文章表中,并在删除用户时将其设置为null,不是吗?我希望数据库关系与ERD图中的关系完全相同。我希望表关系与ERD图中的关系完全相同,因为一篇文章的所有者只能是一个用户。删除用户后,他的文章仍然存在于数据库中。您只需将UserID移动到article表中,并在删除用户时将其设置为null,就可以实现这一点,不是吗?
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() { }
}