我将应用程序从ASP.NET重写为Silverlight并使用NHibernate 2。 我的数据库中的表看起来像这样: alt text http://img268.imageshack.us/img268/4940/tablesqp.jpg
在Dziecko表中我提到了Opiekun和Grupy的id。在ASP中它对我来说没问题,但是在视频夏天用NHibernate我看到Stephen Bohlen交换使用这种类型的对象,对我来说它的Opiekun和Grupy.But在SQL Server中我无法定义对象类型,所以更好的是只映射这个id [我可以查询id的问题]和/或其他什么?使用特定类型的所有对象是效率?我们必须在交换中只查询所有对象的id的类型?
答案 0 :(得分:1)
(我希望我能正确理解你的问题。)
数据库中的关系始终在数据库类型中定义,对于外键列,可能是int
或uniqueidentifer
。数据库应该不知道NHibernate返回给你的应用程序代码的数据传输对象。
使用ManyToOne
等映射数据传输对象中的外键列时,指定对象的类型,因为NHibernate知道关系始终位于您指定的外键列之间在属性中,以及要返回的对象类型的Id
(主键)。这样可以省去额外查询以返回父或子实体的麻烦 - NHibernate会自动为您执行JOIN
并将关系信息作为对象层次结构返回,而不仅仅是一组id值。