我已經通過的NuGet安裝NHibernate.3.3.2.4000
到我MVC3
項目,將其配置沒有proxyfactory.factory_class
:NHibernate的ProxyFactory裏
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect, NHibernate</property>
<property name="connection.connection_string_name">db</property>
<property name="adonet.batch_size">50</property>
<property name="current_session_context_class">web</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<mapping assembly="TheWorkshop.DomainModel" />
</session-factory>
</hibernate-configuration>
,但這樣我得到了以下錯誤:
The following types may not be used as proxies: TheWorkshop.DomainModel.Contact: method set_DateAdded should be 'public/protected virtual' or 'protected internal virtual'
凡DateAdded屬性私下設置DateAdded值
public virtual DateTime DateAdded
{
get { return _dateAdded; }
private set { _dateAdded = DateTime.Now; }
}
我不是特別想讓setter公開,想法是DateAdded是自動設置的。
我已經看到,暗示我可以設置崗位proxyfactory.factory_class
到
<property name="proxyfactory.factory_class">
NHibernate.ByteCode.Castle.ProxyFactoryFactory,
NHibernate.ByteCode.Castle
</property>
但安裝的NuGet沒有打倒任何引用NHibernate.ByteCode.Castle
,當我試圖Install-Package NHibernate.Castle
它未能與
Install failed. Rolling back...
Install-Package : Already referencing a newer version of 'NHibernate'.
At line:1 char:16
+ Install-Package <<<< NHibernate.Castle
+ CategoryInfo : NotSpecified: (:) [Install-Package], InvalidOperationException
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
所以我想我可以下來版本的NHibernate,但那似乎是錯誤的... 什麼應該我這樣做,類似的問題NuGet: NHibernate, Castle.Core 3.0 and where is ProxyFactoryFactory?說的I並不需要在新版本中
The last versions of NHibernate do not require configuring a proxy factory.
An internal one is used by default and the old adapters are not part of the project anymore.
這就是它,我刪除了setter - 我在構造函數中設置值,所以不知道當我編寫setter時我在想什麼。花了我很多時間寫下這個問題,大約5秒鐘來修復! – 2013-02-25 21:44:01