我已经NHibernate.3.3.2.4000
通过 Nuget 安装到我的MVC3
项目中,配置它没有proxyfactory.factory_class
:
<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>
但像这样我收到以下错误:
以下类型不得用作代理:TheWorkshop.DomainModel.Contact:方法 set_DateAdded 应为“公共/受保护虚拟”或“受保护内部虚拟”
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>
NHibernate.ByteCode.Castle
但是当我尝试安装 Nuget 时,安装并没有取消对 的任何Install-Package NHibernate.Castle
引用
安装失败。回滚...
Install-Package:已经引用了更新版本的“NHibernate”。
在 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 以及 ProxyFactoryFactory 在哪里?说我不需要proxyfactory.factory_class
在较新的版本 中配置
NHibernate 的最新版本不需要配置代理工厂。
默认情况下使用内部适配器,旧适配器不再是项目的一部分。