2010-05-01 160 views
0

我重写应用程序从ASP.NET到Silverlight和使用NHibernate的在我的DB 2 表看起来是这样的: alt text http://img268.imageshack.us/img268/4940/tablesqp.jpg问题NHibernate的映射表

在Dziecko表我有参考Opiekun和Grupy的ID 。在ASP中,对我来说没问题,但在视频夏天与NHibernate我看到斯蒂芬博伦交换使用这种类型的对象,对我来说它的Opiekun和Grupy.But在SQL Server中我不能定义对象类型,所以更好的是地图只有这个编号[我会问问题查询编号]和或其他东西?使用特定类型的所有对象是效率?我们必须查询所有交换的对象只有int类型的id的??

回答

1

(我希望我理解正确你的问题。)

在数据库中的关系数据库类型总是定义,可能无论是在int或外键列的情况下,uniqueidentifer。数据库不应该知道NHibernate返回给你的应用程序代码的数据传输对象。

当您使用ManyToOne等映射数据传输对象中的外键列时,您指定对象的类型,因为NHibernate知道该关系总是在您在属性中指定的外键列之间,以及要返回的对象类型的Id(主键)。这为您节省了额外查询返回父实体或子实体的麻烦--NHibernate自动为您执行JOIN,并将关系信息作为对象层次结构返回,而不仅仅是一组id值。