我读了大约20个关于那个问题的问题,但找不到我的具体案例的解决方案,所以我在这里......
我使用通过NuGet
安装的nhibernate和流畅的nhibernate的最新版本所有类都是pubblic,我在构建时没有错误
这是我所有测试的基类:
namespace Gedi.IntegrationTest
{
public class BaseDBTest : IDisposable
{
private static NHibernate.Cfg.Configuration Configuration;
private static ISessionFactory SessionFactory;
protected ISession session;
public BaseDBTest()
{
if (Configuration == null)
{
Configuration = new NHibernate.Cfg.Configuration();
Configuration.Configure(); // read config default style
Fluently.Configure(Configuration)
.Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<Tag>(new AutoMapConfiguration())));
SessionFactory = Configuration.BuildSessionFactory();
}
session = SessionFactory.OpenSession();
new SchemaExport(Configuration).Execute(true, true, false, session.Connection, Console.Out);
}
public void Dispose()
{
session.Dispose();
}
}
}
这是autoMapConfig:
namespace Gedi.Application.DataAccess.Maps
{
public class AutoMapConfiguration : DefaultAutomappingConfiguration
{
public override bool ShouldMap(Type type)
{
return type.Namespace.EndsWith("Entity");
//return type.Name.Equals("Tag");
}
}
最后是地图
namespace Gedi.Application.DataAccess.Maps
{
public class TagMap: ClassMap<Tag>
{
public TagMap()
{// omitted for brevity}
}
}
这是我的Tag对象的定义:
namespace Gedi.Domain.Object.Entity
{
public class Tag: IKeyedEntity<int>
{// omitted for brevity}
}
调试测试我发现ShouldMap
从未被执行但是为什么?