0

在 NHibernate 中,我有这个配置。

 <property name="Name" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a222222229">
      <column name="Name" />
    </property>

这些是什么意思?msconrlib,版本,文化,publicKeyToken ?为什么我们需要这些?我在 java env 中研究过 Hibernate,我从不使用这些标签。

谢谢

4

2 回答 2

0

类型描述了用于该属性的 .Net CLR 类型。在这种情况下,一个普通的字符串。

在这种情况下,您不必指定它。在某些情况下,您需要指定它,例如,当您使用自定义类型时。或者当您想要映射 DateTime 时。

关于类型各部分的含义: 类型是System.String,对程序集名称、文化和版本进行了非常精确的描述。publicKeyToken 是程序集强名称的密钥——这允许重复程序集名称,只要它们使用不同的密钥签名。

您可以将此映射写为

 <property name="Name">
      <column name="Name" />
 </property>

或者

<property name="Name" type="String">
      <column name="Name" />
</property>

但是,如果您想在某些程序集中使用自定义类型,则需要指定是否更详细,就像您现在正在做的那样。

于 2012-05-03T20:31:13.640 回答
0

在 MS .Net 中,它被称为强程序集名称。这是在 .Net Framework 中识别特定类型的方式。所以这个特定的字符串表明要使用 4.0 版 mscorlib 库中的 System.string。对本地化没有偏好。这允许 .Net 使用部署到 GAC 的程序集 - 全局程序集缓存,它充当系统 dll 的全局目录。

于 2012-05-03T21:54:30.633 回答