1

这是我项目中流利映射的当前代码

public FluentConfiguration Setup(Action<MappingConfiguration> mappingConfigurationAction)
    {
        Assembly mappingsAssembly = typeof(SessionFactory).Assembly;

        return Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008.ConnectionString(_connection)
                          .AdoNetBatchSize(1000)
                          .ShowSql()
                          .FormatSql()
                          .Dialect<NhibernateDialect>
                          )
            .Mappings(m =>
                          {
                              m.FluentMappings.AddFromAssembly(mappingsAssembly).Conventions.AddAssembly(
                                  mappingsAssembly).ExportTo(@"C:\Mappings");


                              m.HbmMappings.AddFromAssembly(mappingsAssembly);)

                              if (mappingConfigurationAction != null)
                              {
                                  mappingConfigurationAction(m);
                              }
                          }
            );
    }

这样做是将当前程序集/项目中的所有类包含到映射程序集中。我一直试图从映射程序集中排除一个特定的文件/类,但没有任何运气。

我怎样才能做到这一点?

谢谢,桑迪普

4

3 回答 3

0

我已经看到有一个“标记界面”的建议:

public interface IMappable
{

}


public class MyMappableClass : IMappable 
{
}

public class MyNonMappableClass
{
}

区分要包含在映射中的类。

例如这篇文章提到它

于 2011-07-12T12:56:19.243 回答
0

这是我解决问题的方法:

foreach (Type mappingClass in mappingClasses)
                                  {
                                      if (!mappingClass.Namespace.Contains("Adapter.Common") &&
                                          !mappingClass.Namespace.Contains("OracleMapping"))
                                      {
                                          m.FluentMappings.Add(mappingClass);
                                      }
                                  }

但是我仍然有过滤 HBM 映射的问题,这是我无法用上面的代码实现的。

于 2011-07-20T15:49:17.373 回答
0

这里
AutoMap.AssemblyOf<YourEntity>(type => type.Namespace.EndsWith("Entities"))

于 2011-07-09T15:11:04.497 回答