最近,我在不久前编写的 SOAP Web 服务中遇到了一些性能问题。我注意到我有很多查询正在进行,我的 hbm.xml 映射中充满了lazy=false 语句。我升级到 NHibernate 3.0 并删除了lazy = false 的东西,一切都快了很多......但现在我收到以下错误:
System.InvalidOperationException:生成 XML 文档时出错。---> System.InvalidOperationException: UserProxy 类型不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。
User 是一个类,我从类标记中删除了 lazy=false 属性,如下所示:
<class name="User" table="Users" >
<id name="DatabaseID" unsaved-value="0" column="ID" type="integer" >
<generator class="native"/>
</id>
<property name="IsExpert"/>
.....more stuff here....
</class>
我的网络服务有这样的方法(简化了一点......在现实生活中,我在服务和休眠之间使用类似存储库的模式):
[WebMethod]
public User GetUser(int userid)
{
session = GetCurrentSession();
return session.Load<User>(userid);
}
webservice 期望序列化一个用户,NHibernate 给了我一个 UserProxy(它不是一个用户)。我应该如何克服这个?