【发布时间】:2011-11-08 07:46:08
【问题描述】:
我正在尝试将我的 FNH Automapping 项目升级到最新版本的 NHibernate 和 Fluent NHibernate(NH 3.2 和 FNH 1.3),但现在我在派生类上遇到“无持久性”异常(尽管基类仍然似乎已正确持久化)。
这个派生类 Automapped 与旧的 dll(FNH 1.0,NH 2.1.2)很好 - 我没有以任何方式更改我的映射逻辑或这些类。
我通过将新的 dll 复制到旧的 dll 上来升级我的项目,并删除新 dll 对不再需要的 dll 的引用(例如 Antlr 3、Castle)。
我正在使用的确切版本:
NHibernate 3.2.0.4000
FluentNHibernate 1.3.0.0
System.Data.SQLite 1.0.76.0
VS 2008 9.0.30729.1 SP
Windows XP SP3(32 位)
适用于旧 dll 但不适用于新 dll 的映射代码:
return AutoMap.Assemblies(_assemblies)
// Don't map the abstract base class
.IgnoreBase<OfeEntity>()
// Only map subclasses of OfeEntity
.Where(t => t.IsSubclassOf(typeof(OfeEntity)))
.Conventions.Add(
// Do cascading saves on all entities so lists will be
// automatically saved
DefaultCascade.All(),
// Turn on lazy loading, so will only read data that is actually
// displayed
DefaultLazy.Always()
);
编辑:
打开 FNH 诊断后,我可以看到 FNH 没有使用新的 dll 为我的派生类创建表。
另外,我注意到一件事 - 没有被持久化的类被分为 2 个级别。也就是说,我有以下类:
public abstract class OfeEntity
public class OfeMeasurementBase : OfeEntity
public class OfeDlsMeasurement : OfeMeasurementBase
OfeDlsMeasurement 是没有被持久化的类。 OfeMeasurementBase 以及从 OfeEntity 继承的其他几个类正在正确持久化。
旧版本对此没有问题 - 新版本可能在多级继承时出现错误?
【问题讨论】:
-
什么时候遇到这个异常?在构建会话工厂时?
-
尝试保存或更新时出现异常。
标签: nhibernate fluent-nhibernate nhibernate-mapping