我遇到了Fluent NHibernate AutoPersistenceModelGenerator的问题。它不想拿起自定义地图。
使用Sharp Architecture 2.0,Fluent NHibernate 1.2和NHibernate 3.1。
我目前的相关配置如下:
public AutoPersistenceModel Generate()
{
// This mappings group works with the exception of custom maps!!
var mappings = AutoMap.AssemblyOf<SecurableEntity>(new AutomappingConfiguration());
mappings.Conventions.Setup(GetConventions());
mappings.IgnoreBase<Entity>();
mappings.IgnoreBase<SecurableEntity>();
mappings.IgnoreBase(typeof(EntityWithTypedId<>));
mappings.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
//mappings.UseOverridesFromAssemblyOf<UserMap>(); // Should call Override method of UserMap, but doesn't appear to...
mappings.Override<User>(new UserMap().Override()); // This hack fixes the issue with calling the Override method of UserMap.
mappings.UseOverridesFromAssemblyOf<UserMap>();
return mappings;
}
class UserMap : IAutoMappingOverride<User>
{
public void Override(AutoMapping<User> mapping)
{
//mapping => mapping.Table("Users");
mapping.Table("Users");
}
public Action<AutoMapping<User>> Override()
{
return map =>
{
map.Table("Users");
};
}
}
我已经尝试对配置进行各种修改,并在Fluent NHibernate上倾听互联网文章,但无济于事。我有一个使用Sharp Arch 1.x的工作版本,以及早期版本的NHibernate和Fluent。我假设我缺少语法上的变化。任何和所有的帮助将不胜感激。
谢谢! 约翰
答案 0 :(得分:4)
Fluent NHibernate使用Assembly.GetExportedTypes()
method来获取给定程序集的所有覆盖。正如此方法的文档所述,它获得此程序集中定义的公共类型在程序集外。您的覆盖隐式内部。只需在public
之前添加class UserMap
即可。