這個方法被調用。NHibernate沒有調用SQL Server
public IList<MyStuff> GetMyStuff(Int64 MyStuffId)
{
ICriteria criteria = NHibernateSessionManager.Instance.GetSession().CreateCriteria(typeof(MyStuff));
criteria.Add(Expression.Eq("x", MyStuff));
return criteria.List<MyStuff>();
}
但是,如果我剖析SQL Server,我可以看到,NHibernate不會嘗試訪問服務器。
沒有錯誤發生。這只是criteria.List()
只是返回0行。
MyStuff
是一類
public class MyStuff {
public virtual int Id { get; set; }
public virtual int x { get; set; }
... more attributes ....
public override int GetHashCode() {
return (GetType().FullName + "|" + Id.ToString()).GetHashCode();
}
}
而且的MyStuff是HBM映射:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false" assembly="MyStuff" namespace="My.Stuff" default-lazy="false">
<class name ="MyStuff" table="dbo.viewMyStuff" dynamic-update="false" lazy="false">
<cache usage="read-only"/>
<id name="Id" column="Id" type="int">
<generator class="native" />
</id>
<property name="x" />
.... other properties
</class>
</hibernate-mapping>
以下工作只是:
select * from viewMyStuff
NHibernate的不只是與其他類/人次罰款在同一個項目中。
事實上,如果我故意將HBM文件中的「表格」拼寫錯誤爲「XviewXMyStuffX」,那麼NHibernate對排字錯誤沒有任何問題。爲什麼NHibernate完全忽略了訪問我的數據庫視圖的預期嘗試?