Vb.net 如何告诉Fluent NHibernate忽略特定属性而不自动映射?
我正在使用Fluent NHibernate绘制现有数据库。出于这个原因,自动映射不是我的选择 我如何告诉NHibernate不要映射某些属性?其中许多是只读的,其他的由于其他原因不需要持久化 我正在用VB.Net写这篇文章 我收到典型的错误消息: “以下类型不能用作代理 …应为“公共/受保护的虚拟”或“受保护的内部虚拟” 我故意不让我的对象可重写(相当于C#中的虚拟),因为我不希望NHibernate接触它们Vb.net 如何告诉Fluent NHibernate忽略特定属性而不自动映射?,vb.net,nhibernate,fluent-nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Vb.net,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,我正在使用Fluent NHibernate绘制现有数据库。出于这个原因,自动映射不是我的选择 我如何告诉NHibernate不要映射某些属性?其中许多是只读的,其他的由于其他原因不需要持久化 我正在用VB.Net写这篇文章 我收到典型的错误消息: “以下类型不能用作代理 …应为“公共/受保护的虚拟”或“受保护的内部虚拟” 我故意不让我的对象可重写(相当于C#中的虚拟),因为我不希望NHibernate接触它们 如何实现这一点?为了让NHibernate创建动态代理(包括未映射的属性),必须覆盖
如何实现这一点?为了让NHibernate创建动态代理(包括未映射的属性),必须覆盖所有属性和方法。这并不意味着NHibernate正在映射您的只读属性,它只是要求这些属性是可重写的,以便生成类的代理。解释要求。我仍然对一个不太老套的答案感兴趣,但我在这篇文章中找到了一个解决方法:标记为答案的问题只适用于自动映射,而不适用于类映射。但是如果您仔细阅读注释,在底部他们提到的只是使类成为虚拟的(可重写的)。起初,这似乎很奇怪,但最后一条评论提到,只要不尝试映射到该属性,这样做没有负面影响。它只会创建一个永远不会使用的代理。这是一个很好的答案,说明了为什么需要将所有方法(当然还有属性)都虚拟化。这是关于NHibernate的,不是关于FluentNHibernate的。谢谢您的回复。后来别人也告诉我了,但我忘了在这里更新。这很不幸,因为我有未映射的属性,我不想覆盖或更改:-/但是哦,好吧。答案很有用,谢谢。