2011-07-07 29 views
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); 
           } 
          } 
      ); 
    } 

這裏做的事情是,它包括所有在當前裝配/工程進入測組件的類。我一直試圖從映射程序集中排除一個特定的文件/類,但沒有任何運氣。

我該怎麼做?

感謝, 桑迪普

回答

0

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

+0

正如您在我的代碼中看到的,由於我的項目需求,我使用了流暢和HBM映射的混合。我無法使用automap。 – sanchin

+0

鏈接被破壞,我無法找到這個過載。你可以請更新。 – shankbond

0

我見過的建議有一個 「標記接口」:

public interface IMappable 
{ 

} 


public class MyMappableClass : IMappable 
{ 
} 

public class MyNonMappableClass 
{ 
} 

爲了區分要包括的類在映射中。

例如this post提到它

0

這是我如何解決我的問題:

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

但我仍然有問題,用過濾的HBM映射,我不能與上面的代碼實現。

+0

缺失代碼:var mappingClasses = mappingsAssembly.GetTypes(); – sanchin