我正在尝试设置一些映射并收到此异常:
无法扩展未映射的类:CommonEntity
[MappingException:无法扩展未映射的类:CommonEntity]
NHibernate.Cfg.XmlHbmBinding.ClassBinder.GetSuperclass(String extendsName)+217
NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping mappingSchema,IDictionary`2 inheritMetas)+352
NHibernate.Cfg.XmlHbmBinding .MappingRootBinder.Bind(HbmMapping mappingSchema) +85
NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping mappingDocument, String documentFileName) +156
我有3节课。实体、通用实体和用户。没有实体或公共实体表,只有一个用户表。User 继承自 CommonEntity,CommonEntity 继承自 Entity。Entity 和 CommonEntity 是抽象的。
我已经定义了这个映射:
public class Mapping : ConventionModelMapper
{
public Mapping()
{
IsRootEntity((type, declared) =>
{
return typeof(Entity<Guid>) == type.BaseType;
});
IsEntity((x,y) => typeof(Entity<Guid>).IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface);
Class<Entity<Guid>>(x =>
{
x.Id(c => c.Id, m=>m.Generator(Generators.GuidComb));
x.Version(c=>c.Version, (vm) => { });
});
}
}
这是这样使用的:
var types = typeof(Mapping).Assembly.GetExportedTypes().Where(t => typeof(Entity<Guid>).IsAssignableFrom(t));
var mapping = new Mapping().CompileMappingFor(types);
configuration.AddMapping(mapping);
User 和 CommonEntity 都在“types”数组中。我也尝试为 CommonEntity 添加映射,但没有任何区别。
Class<CommonEntity>(x =>
{
x.Property(c => c.DateCreated, m => m.Type<UtcDateTimeType>());
x.Property(c => c.DateModified, m => m.Type<UtcDateTimeType>());
});
还尝试调用子类而不是类。如果我直接从实体继承用户,一切正常。有什么帮助吗?