在Fluent Mappings中排除一个类

时间:2011-07-07 19:15:02

标签: c# fluent-nhibernate fluent-nhibernate-mapping

以下是我项目中流畅映射的当前代码

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);
                              }
                          }
            );
    }

它的作用是它包含当前程序集/项目中映射程序集中的所有类。我一直试图从映射程序集中排除一个特定的文件/类而没有任何运气。

我该怎么做?

谢谢, 和Sandeep

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我已经看到了建立“标记界面”的建议:

public interface IMappable
{

}


public class MyMappableClass : IMappable 
{
}

public class MyNonMappableClass
{
}

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

例如this post提到它

答案 2 :(得分:0)

以下是我解决问题的方法:

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

但我仍然遇到过滤HBM映射的问题,而上述代码无法实现。