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

これが私の問題を解決した方法です:

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

「マーカーインターフェース」を持つようにというアドバイスを見てきました:

public interface IMappable
{

}


public class MyMappableClass : IMappable 
{
}

public class MyNonMappableClass
{
}

マッピングに含めるクラスを区別するため。

たとえば、この投稿はそれについて言及しています

于 2011-07-12T12:56:19.243 に答える
0

ここを参照してください:
AutoMap.AssemblyOf<YourEntity>(type => type.Namespace.EndsWith("Entities"))

于 2011-07-09T15:11:04.497 に答える