在我的模型中,所有派生类都具有与基本抽象类相同的** persistent **属性和方法。有些类特定的属性没有持久化,方法有不同的实现。 现在我有大约4个继承类,我将来会添加更多。应用程序的本质是可以为不同的用途添加这些类,因此不可能提前知道它们。唯一给出的是它们将共享相同的方法和持久属性。这是一列将用作鉴别器。
我在战略上挣扎。显然我不想为每个派生类编写一个ClassMap。事实上,我就像持久层一样完全不知道这些派生类。我正在考虑让派生类能够在基类之外创建并返回基类。
我认为我没有更好的选择吗?
答案 0 :(得分:2)
你的方法存在缺陷,因为持久层不能对子类一无所知,因为它需要知道加载/存储时类是什么。
可以做的是使用基于约定的映射而不是显式映射(Fluent具有自动映射,而ConfORM仅基于约定/覆盖),因此您不必每次都写类映射。
在ConfORM中,它就像说orm.TablePerClass<TheBaseClass>()
,然后是mapper.CompileMappingFor(TheBaseClassAndAllItsSubclasses)
一样简单,你可以毫不费力地获得映射。