我将以下约定加载到我的 FNH 配置中

public class TableNameConvention : IClassConvention, IClassConventionAcceptance
{
    public void Accept(IAcceptanceCriteria<IClassInspector> criteria)
    {
        criteria.Expect(x => x.TableName, Is.Not.Set);
    }

    public void Apply(IClassInstance instance)
    {
        var tableName = instance.EntityType.Name.Pluralise();

        instance.Table(tableName);
    }
}

我没有在我的任何映射上指定表名,但不应用此约定。我正在使用 Fluent NHibernate 1.4.1.1。任何人都可以发现我可能做错了什么吗?

更新

约定按以下方式加载:
public static NHibernate.Cfg.Configuration BuildConfiguration()
{
    var connectionStringName = "mydb";
    return Fluently.Configure(new NHibernate.Cfg.Configuration())
        .Database(MsSqlConfiguration
                      .MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey(connectionStringName))
                      .Dialect<MsSql2008Dialect>()
                      .AdoNetBatchSize(50))
        .Mappings(m =>
        {
            m.FluentMappings.AddFromAssemblyOf<Profile>();
            m.FluentMappings.Conventions.Add(DefaultLazy.Always(), DynamicUpdate.AlwaysTrue(), DynamicInsert.AlwaysTrue());
            m.FluentMappings.Conventions.AddFromAssemblyOf<HiLoConvention>();
        })
        .ExposeConfiguration(config => config.SetProperty(NHibernate.Cfg.Environment.CurrentSessionContextClass, typeof(ManagedWebSessionContext).AssemblyQualifiedName))
        .ExposeConfiguration(HiLoConvention.CreateScript)
        .ExposeConfiguration(RunSchemaUpdate)
        .BuildConfiguration();
}

所有约定都位于与上面 .AddFromAssembly() 方法调用中引用的 HiLoConvention 相同的程序集和命名空间中。

更新 2:

问题出在 Accept() 方法中,因为如果我删除此方法(以及类声明中的 IClassConventionAcceptance 接口(interface)),则应用约定。我也试过这个期望无济于事
criteria.Expect(x => string.IsNullOrEmpty(x.TableName))

原始代码适用于 Fluent 1.2.1 ...

最佳答案

你有没有尝试过

m.FluentMappings.ConventionDiscovery.AddFromAssemblyOf<HiLoConvention>()

代替
m.FluentMappings.Conventions.AddFromAssemblyOf<HiLoConvention>()

关于nhibernate - Fluent NHibernate 表命名约定不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13401081/

10-13 01:02