我最近下载并安装了NHibernate 3.1。我在3.0安装中复制了2个新的DLL。问题1:这就是我需要做的全部吗?
在我的系统中,我已经实现了一个自定义id生成器,它可以使用3.0,但是我得到一个错误'无法解释id生成器策略',没有进行其他更改。问题2:3.1中我在3.0中做了什么不再有效?
以下是我的自定义生成器类的示例。
public class IdGenerator : TableGenerator
{
public override object Generate(ISessionImplementor session, object obj)
{
if(session.Connection.ToString().ToLower().IndexOf("sqlclient") > 0)
{
IQuery query = session.GetNamedSQLQuery("GenerateSQLServerId");
return Convert.ToInt32(query.UniqueResult());
}
else if (session.Connection.ToString().ToLower().IndexOf("oracle") > 0)
{
IQuery query = session.GetNamedSQLQuery("GenerateOracleId");
return query.List()[0];
}
return null;
}
}
在我的hbm.xml文件中,我有:
<id name="Id" column="ID" type="int">
<generator class="Namespace.IdGenerator, Namespace" />
</id>
就像我说的,这一切都适用于3.0,但不是3.1。也许这是一个安装问题......任何想法?
答案 0 :(得分:0)
问题#1 - 这就是我所做的一切,看起来我现在在3.1版本上。
问题#2 - 我使用类库来托管NHibernate的所有功能,然后在我将新方法实现到系统之前测试一个consolse应用程序。我在我的控制台应用程序中将References更改为3.1并忘记在我的类库中执行相同操作。一旦我得到两个相同的版本错误信息'无法解释id生成器策略'消失了,一切正常。我的自定义生成器有没有错。