我正在尝试使用带有 sql server express 的 fluent nhibernate 完成一些第一步,以在我的项目中添加此功能。
但是遇到了一些错误。由于我是休眠的新手,有一段时间无法解决问题。
我有一个实体
Id { get; private set; }
访问器。并且该实体映射到 sql server 中具有标识 {1,1} 列的表。
但是在创建 session 工厂的过程中,我得到了一个错误:
The following types may not be used as proxies:Entity: method set_Id should be 'public/protected virtual' or 'protected internal virtual'
我知道私有(private) setter 用于封装此属性的设置,但是为什么会出现此错误?
PS: fluent for nhibernate 网站上的示例正在使用 sqllite db,一切都很好。
最佳答案
这是一个让包括我在内的许多 NH/FNH 用户感到悲痛的问题。
直到最近,NHibernate 还允许使用代理对象的私有(private) setter。但是从 NH 3.2 开始,不再允许使用私有(private)二传手 - 它们必须是“' public/protected virtual'或'protected internal virtual '”,如错误消息所述。
对于现有的许多 FNH/NH 示例代码来说,这是一个重大更改,并且对新手来说尤其令人困惑。
关于sql-server-2008 - Fluent Nhibernate 和 Sql Server 私有(private) setter 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10227341/