Исключить класс в Fluent Mappings - PullRequest
1 голос
/ 07 июля 2011

Вот текущий код для плавных отображений в моем проекте

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

Это означает, что он включает все классы, которые находятся в текущей сборке / проекте, в сборку сопоставления.Я безуспешно пытался исключить один конкретный файл / класс из сборки сопоставления.

Как я могу это сделать?

Спасибо, Сандип

Ответы [ 3 ]

0 голосов
/ 12 июля 2011

Я видел совет иметь "маркерный интерфейс":

public interface IMappable
{

}


public class MyMappableClass : IMappable 
{
}

public class MyNonMappableClass
{
}

Чтобы различать классы, которые вы хотите включить в отображение.

Например, В этом сообщении упоминается

0 голосов
/ 20 июля 2011

Вот как я решил свою проблему:

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

Но у меня все еще есть проблема с фильтрацией для отображений HBM, которую я не могу достичь с помощью приведенного выше кода.

0 голосов
/ 09 июля 2011

см. здесь :
AutoMap.AssemblyOf<YourEntity>(type => type.Namespace.EndsWith("Entities"))

...