我已经通过Nuget将NHibernate.3.3.2.4000
安装到我的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应该是'public / protected virtual'或'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-Package:已经引用了更新版本的'NHibernate' 在行:1 char:16
+ Install-Package&lt;&lt;&lt;&lt; NHibernate.Castle
+ CategoryInfo:NotSpecified:(:) [Install-Package],InvalidOperationException
+ FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand
所以我想我可以下载NHibernate版本,但这似乎错了......
我应该做什么,类似的问题NuGet: NHibernate, Castle.Core 3.0 and where is ProxyFactoryFactory?说我不需要在较新版本中配置proxyfactory.factory_class
NHibernate的最新版本不需要配置代理工厂 默认情况下使用内部适配器,旧适配器不再是项目的一部分。
答案 0 :(得分:3)