.net 强制转换到基类并丢失继承类型的跟踪

.net 强制转换到基类并丢失继承类型的跟踪,.net,vb.net,.net,Vb.net,我的设想: 我有一个为Fluent+nHibernate构建的POCO模型,当我创建那个对象、用户和执行任何DB操作时,它都可以正常工作。我还有一个名为UserLocal的继承类,它有一些额外的属性,专门用于DB不需要的应用程序内部。我的基类在一个单独的共享库中,所以我不想只为这一个应用程序向它添加DB忽略属性,我不想将基类作为属性嵌入,而不是继承,我想使用继承,就像我已经将其编码出来一样,但我遇到了一个障碍 我的问题是: 当我将UserLocal保存到数据库时,我得到“没有持久化器:AppNa

我的设想: 我有一个为Fluent+nHibernate构建的POCO模型,当我创建那个对象、用户和执行任何DB操作时,它都可以正常工作。我还有一个名为UserLocal的继承类,它有一些额外的属性,专门用于DB不需要的应用程序内部。我的基类在一个单独的共享库中,所以我不想只为这一个应用程序向它添加DB忽略属性,我不想将基类作为属性嵌入,而不是继承,我想使用继承,就像我已经将其编码出来一样,但我遇到了一个障碍

我的问题是: 当我将UserLocal保存到数据库时,我得到“没有持久化器:AppNameSpace.Model.UserLocal”。好吧,这很公平,所以我尝试先使用
DirectCast(objUserLocal,User)
对基类进行强制转换,但仍然得到相同的错误。通过一些在线问答研究,我分别尝试了CType和DirectCast,并在所有4种组合中首先使用了对象类型,例如:
CType(DirectCast(objUserLocal,Object),User)

我想摆脱这个事实,即这是一个UserLocal,并保留我的基类User,但无论我尝试什么,对象的类型始终是UserLocal。我理解对它所做的事情和继承的渴望,但在这种情况下,我想击败它,这是否可能不创建新用户?

这是一个映射问题,而不是铸造问题。如果希望同一个表同时包含User和UserLocal实例,则需要为每个层次结构映射定义一个表。这假设有一个数据库字段区分这两种类型,否则NH将不知道要保留哪种类型。不过,我不希望该表在DB中保留额外的UserLocal属性,也不会从表中读取UserLocal对象。从这个应用程序中,我只想保存基类。